Tomcat 如何处理密钥库中的多个 SSL 证书?

How does Tomcat handle multiple SSL certs in the keystore?

我们有一个架构,其中几个 Java 7 Tomcat 应用程序通过 HTTPS 与一个特殊的网络服务(也是一个 Tomcat 应用程序生活在不同的虚拟机上)进行通信。

更新的基于 SHA-2 的 SSL 证书本身不受许多 Java 7 JRE 的信任。因此,一种解决方案是将 Java 7 个客户端应用程序升级到 Java 8 个,其发行版都支持 SHA-2。但是,由于超出此问题范围的原因,我们的 2 个应用程序非常庞大,无法很快升级到 Java 8。

我希望我可以将 2 个 SSL 证书放入 Web 服务的密钥库中,这样我们就会有一个旧的 Java 7 友好 SHA-1 证书以及更新的 SHA-2 证书。希望客户端应用程序可以 "choose" 使用哪个证书,因此,Java 7 个应用程序会信任旧证书,Java 8 个应用程序可能会信任其中一个。

所以我问:当密钥库中有多个 SSL 证书时,Tomcat 8 的行为如何?它只是返回第一个证书,还是向 HTTPS 客户端提供所有可用证书并允许他们选择使用哪个证书?还是发生了完全不同的事情?

我不知道任何服务器 运行 在一个端口上的多个证书上。但是您可以做的是在 server.xml 配置中定义另一个侦听端口 8434 的连接器,指向较新的证书技术。您可以使用相同的密钥库,但必须在连接器配置中添加参数 keyAlias 以定义要使用的正确别名。