我目前正在使用具有以下密码的 nginx:
ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
我想保持与旧浏览器的兼容性,尤其是旧的移动浏览器,因此不完全禁止 SHA1。
对于 MAC(消息身份验证代码),我如何实现 SHA256 优于 SHA1 并在可能的情况下始终使用。
我可以通过将 SHA256:!SHA: 添加到我的 ssl_ciphers 字符串来强制应用 SHA256,但这也会完全禁止 SHA1。
然而,在开始时使用 ssl_cipher,它往往只使用 SHA1。有什么建议吗?
29.12.2014 更新
感谢大家的建设性意见和讨论。
尽管我仍然认为服务器端 TLS 上的Mozilla 页面总体上很好地涵盖了该主题 - 我只推荐现代兼容性,但应从其中删除 DSS 密码并明确禁止(!DSS) Anti-weakpasswords 的评论 - 感谢您发现它。
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK
有趣的是,ssllabs 并没有为此发出警报或降低利率......
此外,我更喜欢使用自定义生成的 diffie hellman 参数。即使标准的显然被认为是安全的。什么是 OpenSSL 标准 Diffie Hellmann 参数(素数)?
openssl dhparam -check -out /etc/ssl/private/dhparams.pem 2048
如果您愿意,可以将其增加到 4096 以获得偏执和乐趣。