tomcat 9.2 未获取禁用 tls 1.0 的配置

tomcat 9.2 not picking up config for disabling tls 1.0

我试图在 apache tomcat 9.0.2 中禁用 TLS 1.0,但是 属性 从未被采用

下面是错误


20-Feb-2019 22:51:40.913 警告 [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector/SSLHostConfig/Certificate} 将 属性 'sslProtocol' 设置为 'TLSv1.1,TLSv1.2' 没有找到匹配的 属性。 20-Feb-2019 22:51:40.914 警告 [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector/SSLHostConfig/Certificate} 将 属性 'sslEnabledProtocols' 设置为 'TLSv1.1,TLSv1.2' 没有找到匹配的 属性.

Server.XML配置文件


    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="/opt/certs/newtomcatcert/hello.gi.com.jks"
             certificateKeystorePassword="########*"
                         type="RSA" sslProtocol="TLSv1.1,TLSv1.2"
           sslEnabledProtocols="TLSv1.1,TLSv1.2" />
        </SSLHostConfig>
    </Connector>
    -->

nmap 结果

在 2019-03-04 19:54 EST 开始 Nmap 5.51 ( http://nmap.org ) hello.gi.com (10.10.100.71) 的 Nmap 扫描报告 主机启动(0.0013 秒延迟)。 港口国服务 443/tcp 打开 https | ssl 枚举密码: | TLSv1.0 |密码 (4) | TLS_DHE_RSA_WITH_AES_128_CBC_SHA | TLS_DHE_RSA_WITH_AES_256_CBC_SHA | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA |压缩机 (3) |未压缩 |未压缩 |未压缩 | TLSv1.1 |密码 (4) | TLS_DHE_RSA_WITH_AES_128_CBC_SHA | TLS_DHE_RSA_WITH_AES_256_CBC_SHA | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA |压缩机 (3) |未压缩 |未压缩 |_ 未压缩 MAC 地址:00:50:56:A4:E0:AE (VMware)

Nmap 完成:在 1.29 秒内扫描了 1 个 IP 地址(启动了 1 个主机)

最后竟然是句法

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig protocols="TLSv1.1,TLSv1.2">
            <Certificate certificateKeystoreFile="/opt/certs/newtomcatcert/hello.gi.com.jks"
             certificateKeystorePassword="########*"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

如果您想在 Tomcat 9.0.44 上配置此连接器,您在第二个元素 TLSv1.2 之前缺少 + 号。

以使用 Java NIO 连接器为例:

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig protocols="TLSv1.1,+TLSv1.2">
            <Certificate certificateKeystoreFile="/path/to/keystore.jks"
                         certificateKeystorePassword="***********"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

作为另一个例子,如果你想使用 Java NIO2 连接器。这允许您使用 HTTP2 协议,如果您想激活 TLSv1.1、TLSv1.2 和 TLSv1.3,则可以使用以下连接器:

    <Connector port="8443" 
               protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               maxThreads="150" SSLEnabled="true">
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig protocols="TLSv1.1,+TLSv1.2,+TLSv1.3">
            <Certificate certificateKeystoreFile="/path/to/keystore.jks"
                         certificateKeystorePassword="***********"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

最后一个示例与前一个示例类似,但删除了所有不再安全的协议(除 SSLv2、SSLv3 和 TLSv1.0 外均处于活动状态):

    <Connector port="8443" 
               protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               maxThreads="150" SSLEnabled="true">
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig protocols="all,-SSLv2,-SSLv3,-TLSv1">
            <Certificate certificateKeystoreFile="/path/to/keystore.jks"
                         certificateKeystorePassword="***********"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>