如何使tomcat在不重新启动的情况下选择新证书

时间:2019-07-11 17:29:15

标签: tomcat ssl-certificate

我们有一个Web应用程序,其中SSL证书每100天过期一次并自动更新。每当碰巧选择新更新的证书时,我们都必须重新启动服务器。 证书更新时,tomcat java进程可以通过任何方式自动获取新证书。 集群中有数千台计算机。

1 个答案:

答案 0 :(得分:0)

是的,有一种方法可以借助代码自动加载证书。您要做的就是从主机下载证书,然后将该证书导入到Tomcat服务器的Connector(可以在server.xml中找到)指向的密钥库中。这可以借助称为 keytool 的工具来完成。

keytool -importcert -file mycertfile.pem -keystore keystore.jks -alias "Alias" -storepass <PASSWORD>

将证书添加到密钥库后,您可以初始化SSLContext并将其传递以从服务器进行其他后续调用。

SSLContext sslContext = SSLContexts.custom()
            .loadTrustMaterial(new TrustStrategy() {
@Override
public boolean isTrusted(X509Certificate[] chain, String authType) throws 
CertificateException {
                    return true;
                }
            })
            .loadKeyMaterial(<Keystore-loaded with certificate>,<password of the keystore>)
            .build();

Config config = Config.newConfig();
config.withSSLContext(sslContext);`

config 对象可以作为参数传递给函数 .withConfig(config),以创建客户端调用。