如何在Java中设置TLS1.2版本

use*_*310 5 java security ssl jboss

环境详情:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode).
Run Code Online (Sandbox Code Playgroud)

我们使用的是jboss-4.2.3.GA,胖客户端使用的是ejb。

并且我们尝试通过以下方式设置TLS1.2版本:

  1. 控制面板-->程序-->Java-->高级选项卡-->高级安全设置勾选了TLS1.1和TLS1.2,取消勾选其余旧版本。但在 Wire shark 软件中,我们仍然看到客户端仅在 TLSV1 中与服务器通信。

  2. -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true

    在启动脚本中给出,但在 Wire shark 软件中,我们看到客户端仅以 TLSV1 与服务器通信。

    参考链接:https://superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7

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

    jre/lib/security/java.securityjdk1.7.0_40/jre/lib/security/java.security。但在 Wire shark 软件中,我们仍然看到客户端仅在 TLSV1 中与服务器通信。

    参考链接:如何强制java服务器仅接受tls 1.2并拒绝tls 1.0和tls 1.1连接

有人可以告诉我们如何为客户端和服务器强制执行 TLS1.2 版本吗?

小智 1

我将 Tomcat 6 与 java 7 一起使用,因为 java 6 及更早版本不支持 TLS1.2。

为了配置我的服务器,我执行了以下操作:

  1. 修改了文件 server.xml 的 Connector 标签处的属性 sslEnabledProtocols,如下所示:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="450" scheme="https" secure="true"
           keystoreFile="<your_keystore>" keystorePass="<somepasswd>" clientAuth="false"
           keyAlias="tomcat" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"
           URIEncoding="UTF-8" maxHttpHeaderSize="32768" 
           ciphers = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                      TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,
                      TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA" />
Run Code Online (Sandbox Code Playgroud)
  1. 我测试了整个应用程序以避免不兼容。