使用Java更新Tomcat的server.xml文件

时间:2015-02-24 07:06:41

标签: java xml tomcat java-ee server.xml

我是tomcat Administration的新手。

我的要求是,管理员用户可以上传需要应用于tomcat的证书文件。

目前,我的tomcat server.xml,Connector标签看起来像

<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" clientAuth="false" sslProtocol="TLS" acceptCount="100" scheme="https" secure="true" keystoreFile="${catalina.base}/conf/tomcat.p12" keystoreType="PKCS12" keystoreAlias="tomcat" keystorePass="password" SSLEnabled="true"/>

在运行时,管理员用户可以使用提供的门户网站上传新的.p12证书文件和密码。 在服务器端,我必须使用java更新keystoreFile标记的keystorePassConnector个参数。

这样就需要新的证书文件。

在我的搜索中,有些人建议使用2个server.xml文件。有人告诉编辑server.xml文件。在tomcat docs中提到它,因为这个参数可以在系统环境中配置,并且可以直接更新。

我尝试更新系统环境参数思维是一个简单的解决方案,但没有成功(可能是我做错了)。

另外,我想知道是否有任何解决方案可以在没有tomcat重启的情况下应用我的更改。 有人可以帮我解决这个要求的正确方法。

处理此类要求的任何链接都会有所帮助。

1 个答案:

答案 0 :(得分:0)

这应该是一个评论,因为我的建议不是一个完整的答案,但我会在评论中用尽空间。

只是为了确保。您想要更新用于验证SSL连接的证书,我要问的原因通常是tomcat在apache后面,而ssl由apache处理而不是tomcat。如果要添加证书以验证客户端的ssl(例如,他有自签名证书),则不要在连接器上执行此操作。

不是最简单的,如果在证书上传时将其重命名并将其全部放在同一路径上(并使用相同的密码),那么您不必更新server.xml。

您可以轻松检查更新是否无需重启(只需更换证书并查看会发生什么),但我对此表示怀疑。您可以检查连接器实现的源代码(只打开正确的一个,因为它们目前是3个实现),并查看是否可以修改它以触发密钥库更新。

最后,你真的想提供这样的功能吗?暴露越少,对证书的操纵越安全。