我是 tomcat 管理的新手。
我的要求是admin用户可以上传需要应用到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 更新 Connector
标记的 keystoreFile
和 keystorePass
参数。
以便它获取新的证书文件。
在我的搜索中,有些人建议使用 2 server.xml 文件。有些人告诉编辑 server.xml 文件。在 tomcat 文档中提到,因为此参数在系统环境中是可配置的,并且可以直接更新。
我尝试更新系统环境参数,认为这是简单的解决方案,但没有成功(可能是我做错了)。
此外,我想知道是否有任何解决方案可以在不重启 tomcat 的情况下应用我的更改。 有人可以帮助我什么是满足此要求的正确方法。
处理此类要求的任何链接都会有所帮助。
最佳答案
它应该是一条评论,因为这是我的建议,不是一个完整的答案,但我会在评论中用完空间。
只是为了确定。您想更新用于验证您的 SSL 连接的证书,我问的原因通常是 tomcat 在 apache 后面,而 ssl 由 apache 而不是 tomcat 处理。如果您想添加证书以验证客户端的 ssl(例如,他有自签名证书),您不要在连接器上执行此操作。
这不是最简单的吗,如果在上传证书时重命名它并将它始终放在同一路径(并使用相同的密码),这样您就不必更新 server.xml。
您可以在不重启的情况下轻松检查更新是否有效(只需更换证书,看看会发生什么),但我对此表示怀疑。您可以检查连接器实现的源代码(只需打开正确的一个,因为目前它们是 3 个实现),看看您是否可以修改它以触发 keystore 更新。
最后,你真的想提供这样的功能吗?对证书的操纵越少,您就越安全。
关于java - 使用Java更新Tomcat的server.xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689959/