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

4

我是一个新手,对Tomcat管理不熟悉。

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

目前,我的Tomcat server.xml文件中,连接器标签如下:

<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"/>

在运行时,管理员用户可以通过提供的Web门户上传新的.p12证书文件和密码。在服务器端,我需要使用Java更新Connector标记的keystoreFile和keystorePass参数,以便它使用新的证书文件。
在我的搜索中,有些人建议使用2个server.xml文件,有些人告诉我编辑server.xml文件。在Tomcat文档中,它被提到这些参数是可配置的系统环境,并且可以直接更新。
我尝试更新系统环境参数,认为这是简单的解决方案,但没有成功(可能是我做错了)。
此外,我想知道是否有任何解决方案,可以在不重启Tomcat的情况下应用我的更改。能否有人帮助我确定正确的方法来满足这个要求。
任何处理此类要求的链接都将有所帮助。
1个回答

0

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

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

如果上传证书时将其重命名并始终放置在相同路径上(并使用相同的密码),那么最简单的方法不是这样吗,这样您就不必更新server.xml。

您可以轻松检查更新是否有效而无需重新启动(只需替换证书并查看发生了什么),但我怀疑它是否有效。您可以检查连接器实现的源代码(只需打开正确的源代码,因为当前有3个实现),并查看是否可以修改它以触发密钥库更新。

最后,您真的想提供这样的功能吗?您的证书受到的操纵越少,您就越安全。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接