在 nginx 配置中设置 ssl_prefer_server_ciphers 指令

Has*_*aig 25 ssl nginx

这个问题是关于ssl_prefer_server_ciphers在配置 nginx 时设置正确的值。

根据 Mozilla 建议的一个相当典型的配置,该值应该是off(来源:https : //ssl-config.mozilla.org/#server=nginx&server-version=1.17.7&config=intermediate&openssl-version=1.0.1g)。

根据 nginx 自己的文档,应该始终将其设置为onhttps : //www.nginx.com/blog/nginx-https-101-ssl-basics-getting-started/(在文档中搜索ssl_prefer_server_ciphers)。

我不知道该遵循哪些建议。这两个来源都非常可靠。

一些行业专家能否就何时应该转off,以及何时转on?也很想知道原理。

Ter*_*nen 31

ssl_prefer_server_ciphers设置为on,Web服务器拥有者可以控制其密码是可用的。

首选此控制的原因是 SSL、TLS v1.0 和 TLS v1.1 中可用的旧密码和不安全密码。

当服务器支持旧 TLS 版本并ssl_prefer_server_ciphers关闭时,攻击者可以干扰握手并强制连接使用弱密码,从而允许解密连接。

弱密码套件在 TLS v1.2 和 v1.3 中已被弃用,这消除了服务器指定首选密码的需要。

现代设置中的首选设置是ssl_prefer_server_ciphers off,因为这样客户端设备就可以根据客户端设备的硬件功能选择他喜欢的加密方法。

例如,如果移动设备没有 AES 加速,它可以选择使用 ChaCha 密码以获得更好的性能。

  • 这应该是公认的答案,因为它实际上回答了问题。 (2认同)

小智 2

好的,所以选择此参数的打开或关闭分为三个类别。

**Modern** : Services with clients that support TLS 1.3 and don't need backward compatibility
**Intermediate** : General-purpose servers with a variety of clients, recommended for almost all systems
**Old** : Compatible with a number of very old clients, and should be used only as a last resort
Run Code Online (Sandbox Code Playgroud)

唯一需要推迟此参数的情况是现代配置,您不需要任何向后兼容性,在这种情况下,客户端将无法与除 tlsv1.3 之外的旧 ssl/tls 连接。

  • 除了 Mozilla 建议将其设置为“关闭”,即使对于中间配置也是如此 https://ssl-config.mozilla.org/ (8认同)
  • 这并不能回答问题。 (2认同)