我知道tomcat可以通过设置监听不同IP的多个连接器来处理多个SSL证书,但是可以在同一个IP上进行设置吗?
情况是我们在一个tomcat实例中运行多个Web应用程序。我们的服务器只有1个静态IP。 Tomcat设置为具有虚拟服务器,因此根据域提供不同的应用程序。但是,如果我们希望SSL更多地应用于其中一个应用程序,我预测我们可能会遇到麻烦。
有没有人在这个领域有更多经验?
答案 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.com
和secure.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