【问题标题】:Enable TLS 1.2 only in apache-tomcat-9 and Java 8仅在 apache-tomcat-9 和 Java 8 中启用 TLS 1.2
【发布时间】:2019-03-22 07:31:01
【问题描述】:

我已经在 Apache Tomcat 9.x.x 中部署了我的 Web 应用程序,我有两个 Java 选项

  • Openjdk 版本 1.8.x
  • Oracle Java 1.8.x

我只需要允许 TLS 1.2。

请帮助指导我实现这一目标。

我已尝试关注以下链接(不确定它们是否已过时)。

https://www.ssllabs.com/ssltest/analyze.html?d=> 说:TLS 1.1 和 TLS 1.0 仍然启用。

how to enable TLS v1.2 in Apache tomcat 8 , I am using Java 8

How do I disable SSLv3 in tomcat?

Does Tomcat support TLS v1.2?oraclesoon提到的两个步骤好像不行)

How do I disable SSLv3 support in Apache Tomcat?

另外HOW TO -- Disable weak ciphers in Tomcat 7 & 8sslProtocol 在 java 8 中不再使用

【问题讨论】:

    标签: java tomcat ssl java-8 tomcat9


    【解决方案1】:

    我使用 tomcat 9.0.14 和 JSSE。它工作正常。 (使用 TLSV1.1 和 TLSV1.2)

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

    见:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html#SSL_Support

    【讨论】:

      【解决方案2】:

      您必须在 $CATALINA_BASE/conf/server.xml 文件中配置连接器。 APR 配置示例如下:

      <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
      <Connector
                 protocol="org.apache.coyote.http11.Http11AprProtocol"
                 port="8443" maxThreads="200"
                 scheme="https" secure="true" SSLEnabled="true"
                 SSLCertificateFile="/usr/local/ssl/server.crt"
                 SSLCertificateKeyFile="/usr/local/ssl/server.pem"
                 SSLVerifyClient="optional" SSLProtocol="TLSv1.2"/>
      

      请参考此configuration guide 并尝试一下。

      【讨论】:

      • 使用mkyong.com/tomcat/…,我已经配置了>
      • 无论如何我在文档中没有看到名为sslEnabledProtocols 的属性。
      • 如问题中所述,ssllabs.com/ssltest/analyze.html?d=> 说:TLS 1.1 & TLS 1.0 仍然启用。
      • 更改您的SSLProtocol="TLSv1.2" 并再次检查。
      • 我会这样做的。但是在许多文档中已经找到了一个 sslProtocol="SSL"。连接器的这些属性是否区分大小写。我应该删除 sslProtocol 吗?
      【解决方案3】:

      如果您需要逐个请求检查以确保有人没有错误配置您的服务器,您可以添加一个 ContainerRequestFilter 然后在 filter(RequestContext requestContext) 方法插入一个检查以验证 TLS 连接是否符合您的要求。

      if("TLSv1.2".equals(requestContext.getProperty("org.apache.tomcat.util.net.secure_protocol_version"))
      {
         throw new IllegalStateException("Invalid TLS version");
      }
      

      此示例来自 Tomcat 8,但我怀疑其他容器可能有一个选项。

      【讨论】:

        猜你喜欢
        • 2020-05-03
        • 1970-01-01
        • 2017-01-25
        • 2020-04-12
        • 2016-12-07
        • 2017-01-02
        • 2019-03-18
        • 2015-12-01
        • 1970-01-01
        相关资源
        最近更新 更多