Tomcat 8.5上的多个SSL配置

问题描述:

我正在尝试使用单个IP在Tomcat 8.5上配置多个SSL证书。我的相关server.xml中看起来是这样的:Tomcat 8.5上的多个SSL配置

<Connector port="9090" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      URIEncoding="UTF-8" 
      redirectPort="9443" /> 
<Connector port="9443" protocol="HTTP/1.1" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true" hostName="firstnationalsculpturepark.com" 
      clientAuth="false" sslProtocol="TLS" defaultSSLHostConfigName="firstnationalsculpturepark.com" 
> 
    <SSLHostConfig hostname="firstnationalsculpturepark.com"> 
     <Certificate 
       certificateKeystoreFile="/apache/conf/twinfeats.keystore" 
       certificateKeystorePassword="xxxxxxx" 
       certificateKeyAlias="firstnationalsculpturepark" 
     /> 
    </SSLHostConfig> 
</Connector> 

在启动时,以下记录:

03-Aug-2016 16:47:04.541 WARNING [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'hostName' to 'firstnationalsculpturepark.com' did not find a matching property. 

我不知道我在做什么错误的,因为主机名属性中指示Tomcat 8.5文档作为SSLHostConfig的一个属性。 (上面的错误然后导致试图找到默认密钥库文件的错误,因为它不使用我指定的那个,但是这是预期的。)

+2

'hostName'是一个属性'SSHConfig'而不是'Connector',和你在'Connector' –

+0

尼斯抓得到的错误,谢谢!我从连接器中删除了hostName属性,现在唯一剩下的错误是它抱怨说它找不到.keystore,即使我正在尝试配置twinfeats.keystore。有任何想法吗? – TwinFeats

+0

我做了一些改变,错误消失了,但我不明白为什么。 :)我将不推荐使用的keystoreFile和keystorePass属性添加到连接器,现在它开始正常工作。所以它看起来不像我的默认SSLHostConfigName? – TwinFeats

我有多个SSLConfig工作,但请注意“主机名“在上面的SSLHostConfig应该有一个大写'N',例如hostName。 PLUS ...我不得不升级到tomcat 8.5.13(最新版本),因为它似乎与当时使用的8.5.4不兼容。

我对别人例如:

<Connector port="443" 
      ............ 
      scheme="https" secure="true" SSLEnabled="true"        
      defaultSSLHostConfigName="mydomain.com"> 
    <SSLHostConfig hostName="mydomain.com" 
        certificateVerification="false"> 
     <Certificate 
      certificateKeystoreFile="my.ks" 
      certificateKeystorePassword="password" 
      certificateKeyAlias="cert1"/> 
    </SSLHostConfig> 
    <SSLHostConfig hostName="mydomain2.com" 
        certificateVerification="false"> 
     <Certificate 
      certificateKeystoreFile="my.ks" 
      certificateKeystorePassword="password" 
      certificateKeyAlias="cert2"/> 
    </SSLHostConfig> 
</Connector>