我目前正在与顽固的 SSL 实现作斗争。我用包含以下内容的密钥库替换了旧密钥库:
- 来自公共 CA 的证书(不再是自签名的!)
- 中级证书 (godaddy)
- 证书/密钥长度为 2048 位,而旧的为 1024 位。
尽管如此,我的 Chrome 客户端仍然收到“弱 diffie-hellman 密钥”错误(我猜至少 Firefox 现在能够识别它了 :D)。我通过 nmap 进行了一些测试,以观察服务器愿意传输的内容,据说检查结果正常:
root@ubuntu14-en:~# nmap --script ssl-enum-ciphers -p 443 artifactory.mydomain.com
Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-10 08:41 CDT
Nmap scan report for artifactory.mydomain.com (xxx.xx.x.xx)
Host is up (0.00026s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.1:
| ciphers:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.2:
| ciphers:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - strong
| TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA256 - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA256 - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
|_ least strength: strong
Nmap done: 1 IP address (1 host up) scanned in 1.42 seconds
有谁能贡献自己的知识,帮助我提高安全性,使其达到 Chrome 所期望的通用标准?我怀疑这有些愚蠢,比如我需要更多地锁定这些密码,但我认为“DHE_EXPORT”密码是需要注意的。
提前非常感谢您。
答案1
除了禁用导出 DHE 密码套件外,您还需要使用 2048 位 Diffie-Helman 组,而不是 Tomcat 可能正在使用的 1024 位。据信,拥有 NSA 资源的人可以破解 1024 位。为此,请添加-Djdk.tls.ephemeralDHKeySize=2048
到您的 Java 或 Catalina 选项中。请注意,这仅适用于 Java 8 或更高版本 - 如果您使用的是 7(或更早版本),那么是时候升级了。
当您这样做时,请禁用 RC4 密码套件 - RC4 不再安全。
答案2
这些都没有专门解决“弱 diffie-hellman 密钥”的问题,但它们会有所帮助。
MD5 哈希值已被破坏;删除它们。
RC4 密码很弱/已被破坏;请丢弃它们。
SHA1(“SHA”)哈希也被认为是弱的。如果您的 SSL 证书(不是 SSL 配置中允许的加密)使用 SHA1,chrome 会抱怨。但是,我认为您无法摆脱 SHA 密码配置并仍然支持 TLS 1.0,因此您只能坚持这一点。
我建议也禁用 3DES;与 AES 相比,它非常慢并且没有安全优势。