2011-06-12 139 views
6

我一直在Apache Tomcat 7中使用通配符SSL证书。但现在我必须更新,我发现有这些EV(扩展验证)SSL证书,其中浏览器显示一个很好的绿色酒吧让用户感觉更好。这对我的网站很重要,所以我想要它!但我有多个子域名,显然EV SSL证书本质上不是通配符。好吧,我有一组子域名,我可以为每个子域名购买一堆(我绝对需要至少2个)EV SSL证书。在Tomcat中使用多个SSL证书7

我可以在Tomcat 7中进行设置,以便在1个Web应用程序上有多个SSL证书?我为这台机器分配多个IP地址不是问题。

回答

11

如果没有服务器名称指示(SNI),Java(6)中不支持,则每个IP地址需要一个证书。

可以使用address attribute将Tomcat配置为使用具有不同IP地址和证书的多个连接器。

例如:

<Connector 
     port="8443" maxThreads="200" address="10.0.0.1" 
     scheme="https" secure="true" SSLEnabled="true" 
     keystoreFile="keystore1.jks" keystorePass="..." 
     clientAuth="false" sslProtocol="TLS"/> 
<Connector 
     port="8443" maxThreads="200" address="10.0.0.2" 
     scheme="https" secure="true" SSLEnabled="true" 
     keystoreFile="keystore2.jks" keystorePass="..." 
     clientAuth="false" sslProtocol="TLS"/> 

您可能还可以使用相同的密钥库,如果需要,并使用keyAlias属性(在Connector)告诉密钥/证书要使用的连接器(基于在密钥库中的别名上)。

+0

完美,正是我一直在寻找。还没有尝试过,会让你知道它的工作效果。 – 2011-06-14 17:17:47

+0

老兄,是否可以设置域名而不是ip? – 2014-05-12 12:36:30

+0

嗨@布鲁诺,只是想知道,是否有可能在地址属性中使用域名而不是IP地址?因为我托管了很多网站,但它们都属于相同的IP地址。 – 2016-11-26 10:09:02

1

我刚刚得到这个到工作在一个具有多个SSL和IP的服务器上。

添加的IP的这样:
http://www.loadtestingtool.com/help/how-setup-ip.shtml

添加代码,以使服务器使用最大可能的安全性与“密码”(有2048位密钥时)。

第一次测试,这将使用自签名密钥以这种方式工作:
http://community.jboss.org/wiki/GeneratingSelfSignedCertificateWithKeytool
注意,在这个页面中的检测具有在“-keystore”文本的开头错误字符(在多个位置)。

下面是代码:

<Connector protocol="org.apache.coyote.http11.Http11Protocol" address="###.###.###.##1" port="443" minSpareThreads="5" 
    enableLookups="true" acceptCount="100" maxThreads="200" 
    scheme="https" secure="true" SSLEnabled="true" keystoreFile="key1.key" 
    keystorePass="password1" clientAuth="false" sslProtocol="TLS" 
    ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"/> 

<Connector protocol="org.apache.coyote.http11.Http11Protocol" address="###.###.###.##2" port="443" minSpareThreads="5" 
    enableLookups="true" acceptCount="100" maxThreads="200" 
    scheme="https" secure="true" SSLEnabled="true" keystoreFile="key2.key" 
    keystorePass="password2" clientAuth="false" sslProtocol="TLS" 
    ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"/> 
+0

hi @Zuul,只是想知道,是否可以在地址属性中使用域名而不是IP地址?因为我托管了很多网站,但它们都属于相同的IP地址。 – 2016-11-26 10:08:39

1

你可以只让生活更轻松,并得到一个EV SAN(也称为UCC)和添加的每个域作为主题可选名称中的条目。如果要使用多个IP地址,只需导出证书并将其重新导入到每个IP地址(如果您正在运行Windows,那么http://www.ssltools.com/manager非常适合)。 EV SAN证书的一个很好的例子是在https://www.ssl.com找到的证书,只是检查它。

3

我不确定,在这里如果“SNI”真的有关。

但在你的情况下,典型的解决方案将被称为ssloffloading或ssl终止: 即,把你的tomcat behinde apache,配置为在同一个IP上使用多个虚拟主机/域名。您可以为apache中的每个虚拟主机配置使用其自己的SSL证书。

没有为这个主题在这里一步步指导:

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