gpt4 book ai didi

java - 如何在 JRE8u60 中重新激活 TLS1.0

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:10 25 4
gpt4 key购买 nike

我们有一个 Java 桌面产品,我们的客户(小型企业)使用它(除其他外)通过几种不同的 SOAP 协议(protocol)与大型保险公司进行通信。 (我们是 SOAP 客户端)。这里的重点是保险公司是房间里的 gorilla ——我们只是让保险公司和我们的客户之间能够沟通。

我们使用 AXIS1 作为我们的 SOAP 客户端库。通常是完美的,并且已经使用了多年。

一家大型保险公司仍在为他们的 SOAP 服务器使用 TLS1.0。我们对此没有任何影响,就像国际空间站对地球轨道没有影响一样。

不幸的是(对我们来说)最新的 Java 版本 8u60 自动禁用了 TLS1.0。请参阅 JDK-8076221:禁用 RC4 密码套件在 http://bugs.java.com/view_bug.do?bug_id=8076221

所以现在我们有无法通过 8u60 连接的客户。我们可以将它们恢复为 8u51,但这充其量是短期的。

JDK-8076221 提供了一些关于如何重新启用 TLS1.0 的线索,如下所示......

These cipher suites can be reactivated by removing "RC4" form "jdk.tls.disabledAlgorithms" security property in the java.security file or by dynamically calling Security.setProperty(), and also readding them to the enabled ciphersuite list using the SSLSocket/SSLEngine.setEnabledCipherSuites() methods.

不幸的是,对于像我这样的人(依赖安全层被抽象掉),这还不够。

评论

  • TLS 级别控制不是我的事 - 我们依赖 AXIS 等来做所有这些都在幕后,所以有大量的知识我不熟悉。
  • 我们无法控制使用 TLS1.0 接口(interface)的保险公司。
  • 如果我们不解决这个问题,我们的客户将不得不使用其他产品将使用 TLS1.0 - 所以我们不能玩硬球来拯救任何人这里。在保险公司另有决定之前,他们将使用 TLS1.0。
  • 动态(基于代码)解决方案优于任何命令行解决方案,因为我们是桌面应用程序,会发现命令行部署非常有问题。

谁能提供一些更详细的线索,说明如何在 Java 8u60 中以编程方式启用 TLS1.0?

也许是……

Security.setProperty("jdk.tls.disabledAlgorithms", "SSLv3");
SSLContext sslCtx = SSLContext.getInstance("TLS");
SSLSocket.setEnabledCipherSuites("please help me!");
SSLEngine.setEnabledCipherSuites("please help me!");

非常感谢您的宝贵时间,-达米安

最佳答案

检查 http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html算法名称。

TLS 1.0 与“TLSv1”匹配(SSLContext 算法部分),因此类似于以下内容的内容将启用 TLS 1.0(请注意,这适用于 createEngine() 返回的 SSLEngine 实例)。

SSLContext.getDefault().createSSLEngine().setEnabledCipherSuites(new String[] {"TLSv1"});

要启用密码套件,您必须用不同的东西覆盖当前值。您的代码禁用了已经禁用的 SSLv3。相反,您需要类似于

Security.setProperty("jdk.tls.disabledAlgorithms", "");

但是在这样做之前检查这些属性是如何工作的。它希望 Security 属性包含密码套件的名称,例如以逗号分隔的列表。所以你应该做类似的事情

String disabledAlgorithms = Security.getProperty("jdk.tls.disabledAlgorithms");
Security.setProperty("jdk.tls.disabledAlgorithms", disabledAlgorithms .replace("RC4,", ""));

关于java - 如何在 JRE8u60 中重新激活 TLS1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57874937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com