3

我正在按照本教程在 tomcat 中启用 ssl:https ://medium.com/@raupach/how-to-install-lets-encrypt-with-tomcat-3db8a469e3d2

Altough tomcat 最后运行,我无法访问 https,说无法连接。所以我检查了日志,我得到了:

Caused by: java.io.IOException: SSLHostConfig attribute certificateFile must be defined when using an SSL connector

,但我的 certificateFile 定义如您所见:

<Connector port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="100"
    compression="on"
    scheme="https"
    SSLEnabled="true"
    secure="true"
    SSLVerifyClient="none"
    SSLProtocol="TLSv1.2"
    defaultSSLHostConfigName="test.test">
    <SSLHostConfig hostName="test.test">
        <Certificate certificateFile="conf/cert.pem" certificateKeyFile="conf/privkey.pem" certificateChainFile="conf/chain.pem" />
    </SSLHostConfig>
</Connector>

这些文件存在于 conf/

tomcat 9 文档:https : //tomcat.apache.org/tomcat-9.0-doc/config/http.html 部分 SSLHostConfig 和证书

4

1 回答 1

4

您混合使用新的(自 Tomcat 8.5 起)和不推荐使用的属性(参见Tomcat 文档)。设置的效果,例如是使用 hostnameSSLProtocol创建第二个。那是错误消息所指的元素。<SSLHostConfig>_default_

您应该将过时的标签 (SSLVerifyClientSSLProtocol) 替换为当前对应的标签(或者如果您想要默认值则省略它们):

<Connector port="443"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="100"
           compression="on"
           scheme="https"
           SSLEnabled="true"
           secure="true"
           defaultSSLHostConfigName="test.test">
    <SSLHostConfig hostName="test.test"
                   protocols="TLSv1.2">
        <Certificate certificateFile="conf/cert.pem"
                     certificateKeyFile="conf/privkey.pem"
                     certificateChainFile="conf/chain.pem" />
    </SSLHostConfig>
</Connector>

备注:您使用的特定于 APR 连接器的属性。如果该选择是有意的,则应将协议更改为org.apache.coyote.http11.Http11AprProtocol.

于 2021-04-25T22:25:16.997 回答