在 nginx conf ssl_protocols 中优先考虑 TLSv1.2

在 nginx conf ssl_protocols 中优先考虑 TLSv1.2

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 设置的一组建议。

相关内容