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

使用Java更新Tomcat的server.xml文件,java,xml,tomcat,jakarta-ee,server.xml,Java,Xml,Tomcat,Jakarta Ee,Server.xml,我是tomcat管理部门的新手 我的要求是,管理员用户可以上传需要应用到tomcat的证书文件 目前,我的tomcat server.xml连接器标记如下 <Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" clientAuth="

我是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更新
keystrefile
keystrepass
连接器标记的参数

所以它需要一个新的证书文件

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

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

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


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

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

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

这不是很简单吗?如果在上传证书时重命名它,并将它放在同一路径(并使用相同的密码),这样就不必更新server.xml

您可以很容易地检查更新是否可以在不重新启动的情况下工作(只需更换证书,看看会发生什么),但我对此表示怀疑。您可以检查连接器实现的源代码(只需打开正确的一个,因为当前它们是3个iplementation),并查看是否可以修改它以触发密钥库更新

最后,您真的想提供这样的功能吗。操作证书的风险越小,您就越安全