java - Tomcat 如何处理 keystore 中的多个 SSL 证书?

标签 java tomcat ssl https keystore

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

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

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

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

最佳答案

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

关于java - Tomcat 如何处理 keystore 中的多个 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28904920/

相关文章:

java - 如何在 Windows 系统中获取剩余电池生命周期?

java - 无法确定 pom.xml 文件中的哪个依赖项导致 openshift 上的部署失败

java - Tomcat:HTTP 状态 404

Tomcat docker 公开 webapps 和日志文件夹

c - OpenSSL - 在证书链中查找错误深度

提供中间 CA 证书的 Python SSL 服务器

java - Thread Local - 我做错了什么?

java 。 JTable setValueAt 数据不更新

java - 什么是 tomcat 默认 GC 选项?

java - Android 4.4.2 SSL 握手中止