nginx conf 的片段:
server {
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
...
有没有办法设置强制使用 TLSv1.2,如果客户端不支持则回退到 TLSv1.1/TLSv1?
或者说TLSv1.2已经默认使用?
答案1
将使用连接两端支持的最高协议版本。因此,默认情况下将使用 TLS v1.2。
您需要关闭 SSLv2/3 等极不安全的协议的原因在于降级攻击;中间人可以修改 SSL 连接协商以强制使用安全性较低的协议。除了不支持旧协议外,您对此无能为力,因为您永远不会被告知另一端支持更好的协议(因为恶意中间人删除了该信息)。
答案2
默认情况下,您的服务器规则指定有关 SSL 协议的配置,以支持那些开箱即用的协议:
我们不想使用 SSLv2(不安全)或 SSLv3(可利用)
ssl_协议 TLSv1 TLSv1.1 TLSv1.2;
答案3
除非您有特殊理由相信不是这样,否则一般支持 TLS 的系统都会支持 TSLv1.2。
因此,如果可能的话,我会使用:
ssl_protocols TLSv1.2
如果这不可能的话,那么我会使用:
ssl_protocols TLSv1.2 TLSv1.1
TLSv1
也可以在第二种情况下使用(代替更具体的版本),但这样可以确保优先顺序。我假设 TLSv1 通常更喜欢 1.2 而不是 1.1,但明确说明这一点也无妨。
看Mozilla 的 TLS 配置生成器了解有关更通用的 TLS 设置的一组建议。