通过 Tomcat 进行 SSL/TLS - 替换密钥库,DH 仍然很弱

通过 Tomcat 进行 SSL/TLS - 替换密钥库,DH 仍然很弱

我目前正在与顽固的 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 相比,它非常慢并且没有安全优势。

相关内容