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 自己的文档,应该始终将其设置为on
:https://www.nginx.com/blog/nginx-https-101-ssl-basics-getting-started/(在文档中搜索ssl_prefer_server_ciphers
)。
我不知道该听从哪条建议。两个来源的建议都很可靠。
off
一些行业专家能否就何时应转变这一做法提供一些意见on
?我也想知道其中的原理。
答案1
好的,因此有三个类别可以选择打开或关闭此参数。
**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
唯一需要推迟此参数的情况是现代配置,您不需要任何向后兼容性,在这种情况下客户端将无法连接除 tlsv1.3 之外的旧 ssl/tls。
答案2
当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密码获得更好的性能。