我一直在Apache Tomcat 7中使用通配符SSL证书。但是现在我必须更新,我看到有这些EV(扩展验证)SSL证书,其中浏览器显示一个漂亮的绿色栏,以便用户感觉更好。这对我的网站很重要,所以我想要它!但我有多个子域,显然EV SSL证书本质上不是通配符。好吧,我有一定数量的子域名,我可以为每个子域名购买一堆(我绝对需要至少2个)EV SSL证书。
我可以在Tomcat 7中进行设置,以便在一个Web应用程序上有多个SSL证书吗?对我来说,为这台机器分配多个IP地址不是问题。
答案 0 :(得分:11)
如果没有Java(6)中不支持的服务器名称指示(SNI),则每个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
中)告诉连接器使用哪个密钥/证书(基于别名)密钥库中的名称。)
答案 1 :(得分:3)
我不确定,这里“SNI”是否真的相关。
但在你的情况下,典型的解决方案是所谓的ssloffloading或ssl终止: 即把你的tomcat behinde放在apache上,配置为在同一个ip上使用多个vhosts /域名。您可以为apache中的每个vhost配置使用自己的SSL证书。
此处有关于此主题的分步指南:
http://milestonenext.blogspot.de/2012/09/ssl-offloading-with-modjk-part-1.html
答案 2 :(得分: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"/>
答案 3 :(得分:1)
您可以简化生活并获得EV SAN(也称为UCC),并将每个域添加为主题备用名称字段中的条目。如果想要使用多个IP地址,只需导出证书并将其重新导入到每个IP地址(如果您正在运行Windows,http://www.ssltools.com/manager非常适合)。 EV SAN证书的一个很好的例子是在https://www.ssl.com找到的证书,只需检查它。
答案 4 :(得分:0)
我正在使用tomcat 8.5,现在可以用多个SSL /多域配置tomcat。这是我的配置。
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
defaultSSLHostConfigName="localhost" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig hostName="localhost">
<Certificate certificateKeyFile="/$path/privkey.pem"
certificateFile="/$path/certificate.pem"
certificateChainFile="/$path/chain.pem"
type="RSA" />
</SSLHostConfig>
<SSLHostConfig hostName="domainname.com">
<Certificate certificateKeyFile="/$path/privkey.pem"
certificateFile="/$path/certificate.pem"
certificateChainFile="/$path/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>