如何为 tomcat 网络服务器连接启用 TLS1.2 我们正在使用 tomcat 7.0.82

How to enable TLS1.2 for tomcat webserver connections We are using tomcat 7.0.82

我有一个 tomcat 网络应用程序,其中客户端使用 TLS1.2,但技术扫描发现服务器仍在使用 TLS1.0。我想启用 TLS1.2。我们正在使用 Java 7,server.xml 的连接器代码段如下所示,

   <Connector SSLEnabled="true" acceptCount="100" clientAuth="true" disableUploadTimeout="true" enableLookups="true" connectionTimeout="300000" 
            socket.soLingerOn="false" maxKeepAliveRequests="1000" maxThreads="50" port="2024" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" 
            keystoreFile="/cert/fic_rest.jks" keystorePass="********" 
            truststoreFile="/cert/fic_rest.jks" server="UnIdentified" compression="on" compressionMinSize="2048" 
            noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css"
    />
<!-- Define an AJP 1.3 Connector on port 2023 -->
<Connector port="2023" protocol="AJP/1.3" redirectPort="2022" />

    <Connector  acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="true" connectionTimeout="300000" 
            socket.soLingerOn="false" maxKeepAliveRequests="1000" maxThreads="50" port="2020" protocol="org.apache.coyote.http11.Http11NioProtocol" server="UnIdentified"
    />

"sslProtocol="TLS"改成"sslProtocol="TLSv1.2"就够了吗? 我们正在使用 tomcat 7.0.82

sslProtocol配置协议几乎什么都不做:它只指定使用哪个SSLContext,但从服务器的角度来看,这并不限制任何东西。 SSLContext 的任何版本都将默认 SSL 服务器协议设置为受支持协议的完整列表(参见 source code)。

因此你需要设置sslEnabledProtocols="TLSv1.2" (cf. Tomcat documentation) to restrict the accepted protocol versions to only TLS 1.2. You can then test your configuration using curl.

但是,如果使用低于 1.2 的 TLS 版本是整个系统的安全约束(参见 this question),请将以下行添加到 $JRE_HOME/lib/security/java.security:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1

警告:这将影响 Java 中的所有 TLS 连接,即使是那些使用旧数据库的连接。