【问题标题】:how to enable only TLSv1.2 on Java 8 server application如何在 Java 8 服务器应用程序上仅启用 TLSv1.2
【发布时间】:2017-09-14 19:32:39
【问题描述】:

我正在尝试配置在 Java 8 上运行的应用程序以支持 TLSv1.2 连接。我看过有关更改 .../jre/lib/security/java.security、在启动 JVM 时使用 -Ddeployment.security.TLS* 参数以及在代码中指定“TLSV1.2”的 SSLContext 的帖子.

我已设法让服务器仅支持 TLSv1.1 和 TLSv1.2,但也未能成功关闭 TLSv1.1 连接。

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • (当前)SSLContext 只设置了协议的上限(除非 FIPS 模式)。您或任何库/中间件是否在生成的 SSLServerSocket SSLSocket (s) 和/或 SSLEngine (s) 上调用 .setEnabledProtocolsJRE/lib/security/security.java 中是否有任何非标准设置或对 Security.setProperty 的等效调用?
  • 我不知道上限方面。谢谢你提供的信息。如果我使用 setEnabledProtocols(),我会得到想要的结果。但是,这是部分解决方案;我最初的问题仍然存在 - 有没有办法将整个 JVM 的启用协议限制为仅 TLS 1.2?
  • 对于 8u31 和 7u75 以上,您可以在 java.security 中编辑 jdk.tls.disabledAlgorithms(您的 Q 已经列出,并适用于所有运行该 JRE 的 JVM)或等效地在 JSSE 初始化之前调用 Security.setProperty (每个 JVM 可能会有所不同,但在更新 JRE 默认值或密码分析知识更改时可能需要更新)。请注意,这会影响传入和传出连接(如果您同时使用两者)。还发现了骗子stackoverflow.com/questions/32466407/…
  • 由于某种原因,使用 jdk.tls.disabledAlgorithms 参数没有达到预期的效果。这是设置“主开关”,还是可以被程序化措施覆盖?我正在使用以下设置,但我的服务器仍然接受 TLS 1.1 连接:jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 DH keySize
  • 一旦设置,没有 API 可以覆盖 disabledAlgorithms,尽管您可以通过反射“欺骗”并更改任何 Java 内部字段(除非设置了安全管理器并禁止它)。如果您正确引用了您使用的值,则它显然缺少 TLSv1.1 和 DH keySize。这会导致它被错误解析并有效地忽略该项目。

标签: java tls1.2


【解决方案1】:

编辑 security.java 确实有效,假设您拥有所有必要的逗号。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 2019-04-07
相关资源
最近更新 更多