5

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

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

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

4

3 回答 3

5

为了能够在同一个 IP 地址和端口上使用多个证书,您需要服务器名称指示支持。不幸的是,这是在 Java 7 中引入的,仅在客户端

(客户端的 SNI 支持仍然存在问题,最明显的原因是 Win XP、Java 6 及更低版本以及某些移动浏览器上的任何版本的 IE 都缺乏支持。)

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

Apache Httpd 支持 SNI,因此您可以通过VirtualHost对要服务的每个主机名使用不同的 s 并为每个主机使用不同 Tomcat 配置的反向代理来解决您的问题。

于 2012-04-16T11:44:34.473 回答
1

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

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

then https:9001//myurl

for your connections I would personally front it off to an apache httpd reverse proxy server though as it gives you way more flexibility and not a little security when properly configured

于 2012-04-16T12:20:16.233 回答
0

I am not sure, here if "SNI" is really relevant.

But in your case, the typical solution would be so called ssloffloading or ssl Termination: i.e. put your tomcat behinde an apache, which configured to use multiple vhosts / domain names on the same ip. You could configure for each vhost in apache to use its own SSL certificate.

There is a step by step guide for this topic here:

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

于 2013-01-27T07:25:48.307 回答