【问题标题】:How can I disable TLS_RSA_WITH_AES_128_CBC_SHA without disabling others as well?如何在不禁用其他功能的情况下禁用 TLS_RSA_WITH_AES_128_CBC_SHA?
【发布时间】:2019-02-12 05:40:24
【问题描述】:

我正在尝试缩小 Java 应用程序允许的 SSL 密码。在 java.security 文件中,我使用的是:

jdk.tls.disabledAlgorithms = SSLv2Hello,SSLv3的,使用TLSv1,TLSv1.1,3DES_EDE_CBC,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256

这会产生以下允许的密码:

Will-Adams-MacBook-Air:~ Looker$ nmap -script ssl-enum-ciphers -p 9999 <AWS INSTANCE>.compute.amazonaws.com
Starting Nmap 7.70 ( https://nmap.org ) at 2018-09-06 14:23 PDT
Nmap scan report for <AWS INSTANCE>.compute.amazonaws.com
Host is up (0.079s latency).

PORT     STATE SERVICE
9999/tcp open  abyss
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 1024) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 1024) - A
|     compressors:
|       NULL
|     cipher preference: client
|     warnings:
|       Weak certificate signature: SHA1
|_  least strength: A

Nmap done: 1 IP address (1 host up) scanned in 3.39 seconds

太棒了!我快到了。我也想禁止TLS_RSA_WITH_AES_128_CBC_SHA,但将其添加到jdk.tls.disabledAlgorithms 会禁用一切:

Will-Adams-MacBook-Air:~ Looker$ nmap -script ssl-enum-ciphers -p 9999 <AWS INSTANCE>.compute.amazonaws.com
Starting Nmap 7.70 ( https://nmap.org ) at 2018-09-06 14:28 PDT
Nmap scan report for <AWS INSTANCE>.compute.amazonaws.com 
Host is up (0.079s latency).

PORT     STATE SERVICE
9999/tcp open  abyss

Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds

这是为什么?有没有办法让我在不禁用TLS_DHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 的情况下禁用TLS_RSA_WITH_AES_128_CBC_SHA

【问题讨论】:

    标签: java ssl encryption


    【解决方案1】:

    从 java 1.8.0_141 开始,只需 adding SHA1 jdkCA &amp; usage TLSServerjdk.certpath.disabledAlgorithms 应该可以工作。

    jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize

    或者,只需将SHA1 添加到jdk.tls.disabledAlgorithms 也应该可以工作

    jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize

    你没有指定你的 JVM 版本,所以请告诉我这对你有用。

    【讨论】:

    • 感谢您的回答,但不幸的是,将SHA1 添加到我的jdk.tls.disabledAlgorithms 会禁止一切,并且添加SHA1 jdkCA &amp; usage TLSServer' to the jdk.certpath.disabledAlgorithms` 似乎没有任何效果。运行javac -version 给我javac 1.8.0_131
    • SHA-1 在Java 1.8.0_141 上默认禁用,因此更新可能是一个很好的起点。另外,我建议: - 恢复原始 java.security 并从头开始, - 检查服务器端的异常。
    • @LuisMuñoz: 8u141 禁用 证书 上的 SHA1 签名,而不是使用 SHA1 HMAC 的套件(也不是协议签名,但 TLS1.2 SigAlgs 已经修复协议签名)。它正是通过 更改 jdk.certpath.disabledAlgorithms 来做到这一点的——因此更新到 8u141 与在 8u131 中编辑文件完全相同
    • @dave_thompson_085 所以你认为我的回答应该适用于 1.8.0_131 吗?另外,正如我所读到的,SHA1 jdkCA &amp; usage TLSServer 包含在 8U141 中,所以我认为它不适用于 131。
    【解决方案2】:

    为我工作仅删除 Windows 上 Oracle 8u131 中的特定套件(如您所愿)——我没有 Mac,但 JSSE 是纯 Java 并且应该是相同的平台。 SHA1 HmacSHA1 删除所有 Hmac-SHA1 套件也适用于我。我认为,但不能轻易检查,jdk.tls.disabled 中的单独SHA1 也会影响签名和证书,这可能是不可取的;证书可能由 jdk.certpath.disabled 更好地处理。

    属性文件格式比看起来更复杂,有时还很脆弱。确保您的编辑与您发布的完全相同 - 特别是没有遗漏、添加或移动的逗号,没有反斜杠或引号,也没有像 bidi 或 nbsp 这样的不可见字符。您可以将要更改的行放在由 sysprop jdk.security.properties 指定的单独文件中(可以在命令行上使用 -D 进行设置,这与 java.security 中的其他属性不同),以便更容易准确地编辑和检查。

    那些人说,如果您(或某人)认为这会提高安全性,那么您就走错了方向。尽管您的 nmap 没有显示它,但从 jdk.tls.disabled 值中删除 RC4 应该启用 RC4 套件并在我的系统上启用,这比任何 AES128 或 HmacSHA1 套件都危险得多。如果您能找到任何不喜欢 ECDHE 的客户端(P-256 还可以——除非你是一个锡箔帽匠,在这种情况下情况更糟)。正如 nmap 告诉你的那样,用 SHA1 签名的证书很糟糕——除非它是你的根或锚(所以签名实际上对安全性并不重要),或者至少是一个完全私有的 CA,它永远只接受请求来自那些众所周知的优秀和能干并且从不犯错误的人。

    【讨论】:

      【解决方案3】:

      只需将密码套件添加到 jdk.tls.disabledAlgorithms 即可禁用它。 喜欢

      jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH, DHE, \
      EC keySize < 224, 3DES_EDE_CBC, anon, NULL, RSA keySize < 512, DESede, TLSv1, TLSv1.1, TLS_RSA_WITH_AES_128_CBC_SHA
      

      【讨论】:

        猜你喜欢
        • 2014-03-08
        • 2015-01-06
        • 1970-01-01
        • 2022-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        相关资源
        最近更新 更多