【问题标题】:Disabling specific weak ciphers and enforcing Perfect Forward Secrecy using JVM properties使用 JVM 属性禁用特定的弱密码并强制执行完美前向保密
【发布时间】:2017-05-05 08:38:10
【问题描述】:

我想通过使用 JVM 属性禁用不需要的密码来实现完美前向保密 (PFS)

我想通过在 java.security 文件中使用 Java 的“jdk.tls.disabledAlgorithms”属性来实现这一点。

目前我将属性设置如下 jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, MD5, DESede, DH keySize

  Supported versions: TLSv1.2
Deflate compression: no
Supported cipher suites (ORDER IS NOT SIGNIFICANT):
  TLSv1.2
     RSA_WITH_AES_128_CBC_SHA
     DHE_RSA_WITH_AES_128_CBC_SHA
     RSA_WITH_AES_256_CBC_SHA
     DHE_RSA_WITH_AES_256_CBC_SHA
     RSA_WITH_AES_128_CBC_SHA256
     RSA_WITH_AES_256_CBC_SHA256
     DHE_RSA_WITH_AES_128_CBC_SHA256
     DHE_RSA_WITH_AES_256_CBC_SHA256
     TLS_RSA_WITH_AES_128_GCM_SHA256
     TLS_RSA_WITH_AES_256_GCM_SHA384
     TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
     TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
     TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
     TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
     TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
     TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
     TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
     TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

我仍然找不到摆脱不提供 PFS 的网站的机制。例如。 'TLS_RSA_WITH_AES_128_GCM_SHA256'。

我可以通过“jdk.tls.disabledAlgorithms”来完成这项工作吗?如果没有,有没有其他JVM级别的机制?

【问题讨论】:

  • 您在什么情况下尝试禁用它们?你在用(非禁用的)密码套件做什么?
  • 根据link 中的博客文章,完美前向保密 (PFS) 由算法标准名称列表中以 TLS 开头后跟一种 DHE 的任何内容提供。我想通过在 java.security 文件中使用 Java 的 'jdk.tls.disabledAlgorithms' 属性来实现这一点。所以我想删除其他不遵循此规则的密码
  • 你还没有回答我的问题。除非你回答我的问题,否则我无法回答你的问题。或许,其他人也不能。
  • 我认为原因在那里 :)。让我解释一下,没有任何特定的上下文,我想在我的 Web 应用程序的传输级通信期间删除弱密码。所以要做到这一点,我需要在属性 jdk.tls.disabledAlgorithms 中进行什么修改,这将删除我上面提到的不启动的密码。即需要删除以下密码 RSA_WITH_AES_128_CBC_SHA DHE_RSA_WITH_AES_128_CBC_SHA RSA_WITH_AES_256_CBC_SHA DHE_RSA_WITH_AES_256_CBC_SHA RSA_WITH_AES_128_CBC_SHA256 RSA_WITH_AES_256_CBC_SHA256 DHE_RSA_WITH__128_CBC
  • 我在security.stackexchange.com/questions/145855/… 上提出了完全相同的问题。仍在等待正确的答案。

标签: java security encryption


【解决方案1】:

通过在 java.security 文件中进行更改,我已经能够在我们的 Java 服务器中工作的前向保密:

1) 取消注释(去掉#)前面的

crypto.policy=无限

(您至少需要 Java 1.8.0_151)

2) 将 jdk.tls.disabledAlgorithms 设置为

jdk.tls.disabledAlgorithms = SSLv3的,使用TLSv1,TLSv1.1,RC4,MD5,DESede,DH密钥大小

(为了获得这个列表,我在 ssllabs.com 上测试了我的网站并列出了所有 SSLLabs 被认为很弱的密码套件)

在处理此问题时,您可能还需要考虑在启动 java 进程时设置以下两个变量,但实际上不需要这样才能使前向保密工作:

-Djdk.tls.ephemeralDHKeySize=2048 -Djdk.tls.rejectClientInitiatedRenegotiation=true

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 2019-05-27
    • 1970-01-01
    • 2017-06-11
    • 2017-04-02
    • 1970-01-01
    • 2013-12-28
    • 2016-04-22
    • 2012-12-05
    相关资源
    最近更新 更多