Tomcat 8.5 server.xml - 为主机名[_default_]提供了多个SSLHostConfig元素.主机名必须是唯一的

Ecu*_*Ecu 3 tomcat

我试图用Tomcat 8.5更改server.xml并尝试启动tomcat时出现以下错误:

09-Feb-2017 06:23:25.278警告[main] org.apache.catalina.startup.Catalina.load使用conf/server.xml加载Catalina.start:错误在(135,20):为此提供了多个SSLHostConfig元素主机名[ 默认 ].主机名必须是唯一的.

相关的server.xml代码:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" >
  <SSLHostConfig>       
                  keystoreFile="/saswork/sasadmin/tomcat/certs/eccerts" 
                   keystorePass="xxxxxxxx"
                   storepass="xxxxxxxx"
                   truststoreFile="/saswork/sasadmin/tomcat/certs/eccerts"
                   sslProtocol="TLS"
 </SSLHostConfig>   
Run Code Online (Sandbox Code Playgroud)

建议对错误的含义和解决方案的建议表示赞赏.

mut*_*nUp 34

当你明显只有一个时,一个非常令人困惑的错误" 多个SSLHostConfig元素 ".

事实证明这是由使用弃用指令引起的.

如果在指令中放置任何这些已弃用的属性Connector,tomcat会假定您使用旧方法并自动创建SSLHostConfig自身,然后与您正在创建的自身冲突.

在您的特定情况下,你使用clientAuth="false"Connector指令,它已成为certificateVerification="none"SSLHostConfig指令

  • 使用现在不推荐使用的属性sslProtocol =“ TLS”时,我遇到了同样的问题 (2认同)
  • @AdinduStevens,“SSLHostConfig”的新属性是“protocols”。 (2认同)

Sha*_*awn 8

首先,您的语法不正确<SSLHostConfig>.它应该是:

<SSLHostConfig>       
    <Certificate ... />
 </SSLHostConfig> 
Run Code Online (Sandbox Code Playgroud)

另外,我有很多更好的运气把keystorePass里面<Connector>.

<Connector>对我来说唯一有效的方法是:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
     maxThreads="150" scheme="https" secure="true"
     keystoreFile="keystore.jks" keyAlias="alias"
     keystorePass="password"
     clientAuth="false" sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)

否则MultipleSSLHostConfig会发生这些元素错误.

  • 非常感谢.我最初尝试过<Connector>方法,但是在<SSLHostConfig>路径上冒险了.根据您的反馈,我调整了我的<Connector>来复制你的,现在一切正常. (2认同)