在单个tomcat实例中使​​用多个SSL证书

时间:2012-04-16 11:30:22

标签: tomcat ssl

我知道tomcat可以通过设置监听不同IP的多个连接器来处理多个SSL证书,但是可以在同一个IP上进行设置吗?

情况是我们在一个tomcat实例中运行多个Web应用程序。我们的服务器只有1个静态IP。 Tomcat设置为具有虚拟服务器,因此根据域提供不同的应用程序。但是,如果我们希望SSL更多地应用于其中一个应用程序,我预测我们可能会遇到麻烦。

有没有人在这个领域有更多经验?

3 个答案:

答案 0 :(得分:5)

为了能够在同一IP地址和端口上使用多个证书,您需要服务器名称指示支持。不幸的是,this was introduced in Java 7, only on the client side

(在客户端仍然存在SNI支持问题,尤其是因为在Win XP,Java 6及更低版本以及某些移动浏览器上缺少任何IE版本的支持。)

解决方法是使用支持多个主机名的单个证书。执行此操作的首选方法是拥有包含多个主题备用名称(SAN)条目的证书。否则,如果名称具有模式,则通配符证书可能是合适的(例如*.example.com www.example.comsecure.example.com}。

Apache Httpd has support for SNI,因此您可以通过对要提供的每个主机名使用不同的VirtualHost来解决您的问题,并为每个主机使用反向代理到不同的Tomcat配置。 / p>

答案 1 :(得分:1)

我不相信你会逃脱1个ip地址,但你可以使用多个端口

<Connector
       port="9001" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="${user.home}/.keystore" keystorePass="changeit"
       clientAuth="false" sslProtocol="TLS"/>
-->

然后https:9001 // myurl

为您的连接 我个人会把它带到一个apache httpd反向代理服务器上,因为它为你提供了更多的灵活性,而且在正确配置时没有一点安全性

答案 2 :(得分:0)

我不确定,这里“SNI”是否真的相关。

但在你的情况下,典型的解决方案是所谓的ssloffloading或ssl终止:即把你的tomcat behinde放在apache上,配置为在同一个ip上使用多个vhosts /域名。您可以为apache中的每个vhost配置使用自己的SSL证书。

此处有关于此主题的分步指南:

http://milestonenext.blogspot.de/2012/09/ssl-offloading-with-modjk-part-1.html