2014-04-29 04:57:20 +0000 2014-04-29 04:57:20 +0000
50
50

Java 7上的客户端启用TLS 1.1和1.2

Java 7禁用客户端的TLS 1.1和1.2。来自 Java Cryptography Architecture Oracle Providers 文档 :

尽管 Java SE 7 版本中的 SunJSSE 支持 TLS 1.1 和 TLS 1.2,但这两个版本都没有被默认为客户端连接启用。一些服务器没有正确地实现转发兼容性,并拒绝与TLS 1.1或TLS 1.2客户端对话。为了实现互操作性,SunJSSE默认不启用TLS 1.1或TLS 1.2版本的客户端连接。

我想在系统范围内启用这些协议(也许是通过配置文件),而不是每个Java应用的解决方案。

如何在系统范围内administratively enable TLS 1.1和1.2 system wide*?

Note:自POODLE以来,我想administratively disable SSLv3 system wide。(SSLv3的问题至少比POODLE早了15年,但Java/Oracle/Developers没有尊重基本的最佳实践,所以像你和我这样的用户就只能靠清理烂摊子了)。


这里是Java版本:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/bin/java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

答案 (6)

31
31
31
2015-06-16 08:08:06 +0000

你可以添加下面的属性-Dhttps.protocols=TLSv1.1,TLSv1.2来配置JVM来指定HTTPS连接时应该使用哪个TLS协议版本。

14
14
14
2014-06-18 16:09:55 +0000

你可以尝试在你的启动脚本中添加以下内容,假设Java 1.7:

JAVACMD="$JAVACMD -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -D\ deployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true"

其他一些建议。[https://blogs.oracle.com/java-platform-group/entry/javahttps://blogs.oracle.com/java-platform-group/entry/java)(https://blogs.oracle.com/java-platform-group/entry/java_8_will_use_tls)

9
9
9
2014-04-29 08:46:24 +0000

对于Mac OS X上的Java 7,你进入System Preferences > Java,Java控制面板会在一个单独的窗口中打开。然后进入Advanced选项卡,向下滚动到Advanced Security Settings部分,选中Use TLS 1.1Use TLS 1.2复选框。

8
8
8
2014-11-05 13:12:56 +0000

我最近研究了一下,我想补充一下–这对JDK来说是行不通的,deployment.properties只与Applets和其他在JRE中运行的东西相关。

4
4
4
2015-06-18 17:42:31 +0000

看起来,deployment.security.*设置对运行在桌面上的Java Applets和Java Web Start程序有效。正如其他人在这里提到的那样,你可以编辑deployment.properties来指定。这里有一篇文章展示了如何使用组策略为所有用户部署相同的deployment.properties文件。 http://www.darkoperator.com/blog/2013/1/12/pushing-security-configuration-for-java-7-update-10-via-gpo.html

不幸的是,没有办法为计算机上所有直接调用java.exe或javaw.exe的java程序开启这个功能。你必须找到每一个使用java的程序,找到你指定要传递给java的参数的配置文件,然后修改它。在Linux上,这可以通过编辑-Dhttps.protocols=TLSv1.1,TLSv1.2或创建bin/catalina.sh来实现。

我不知道如何让Tomcat在服务器端只使用TLS 1.2。我们用的是Apache HTTP。

1
1
1
2018-07-04 15:02:10 +0000

如果你用的是Java 7,你可以在JVM的参数中添加-Djdk.tls.client.protocols=TLSv1.1,TLSv1.2

注意,这有几个注意事项:

尽管有这些缺点,我认为这可能是有用的,特别是当一个人感兴趣的协议使用TLS但不是HTTPS,例如LDAPS时。我们将所有的服务器都更新到了181的更新,才算成功。