环境细节:
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).
我们正在使用jboss-4.2.3.GA和使用ejb的胖客户端.
我们尝试通过以下方式设置TLS1.2版本:
>控制面板 – >程序 – > Java – >高级选项卡 – >高级安全设置
检查TLS1.1和TLS1.2并取消选中剩余的旧版本.
但仍然在Wire shark软件中,我们看到客户端只与TLSV1中的服务器通信.
> -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
> jdk.tls.disabledAlgorithms = SSLv2Hello,SSLv3,TLSv1,TLSv1.1
在jre / lib / security / java.security和jdk1.7.0_40 / jre / lib / security / java.security中.但仍然在Wire shark软件中,我们看到客户端只与TLSV1中的服务器通信.
参考链接:How to force java server to accept only tls 1.2 and reject tls 1.0 and tls 1.1 connections
有人可以告诉我们如何为客户端和服务器强制执行TLS1.2版本.
解决方法:
我正在使用Tomcat 6和java 7,因为java 6及更早版本不支持TLS1.2.
为了配置我的服务器,我做了以下事情:
>修改了标签Connector上的文件server.xml,其属性为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" />
>我测试了我的整个应用程序以避免没有兼容性.