尽管我按照通过谷歌快速搜索就能找到的众多指南之一进行操作,但我还是在 nginx 服务器上禁用 TLSv1 和 TLSv1.1 时遇到了麻烦。
具体来说,建议通过更改 nginx 配置文件中的此行来完成:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
像这样:
ssl_protocols TLSv1.2;
尽管将配置更改为仅支持 TLSv1.2,但我的 nginx 服务器似乎仍启用了 TLSv1 和 TLSv1.1,这可以通过执行以下操作来证明Qualsys SSL 实验室测试从而将我们的总分限制为“B”。看似很容易解决,但非常令人沮丧。
答案1
经过多次迭代和实验,我发现我指定的密码列表似乎与这个问题有关。一旦我得到正确的列表,TLSv1 和 TLSv1.1 实际上就被正确禁用了(同样根据Qualsys SSL 实验室测试我们再次为我们的网站赢得了 A+ 评级。以下是让我们获得该评级的设置:
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
我在这次实验中发现的一个似乎值得保留的资源是Mozilla SSL 配置生成器。这使我能够确认我的服务器配置的合理性并获得更大的受支持的安全密码列表。
--
我遇到的其他地方都没有提到这一点 - 所以也许这与我使用的 nginx 版本稍旧有关?无论如何 - 我希望这能帮助人们节省大量时间。
答案2
我遇到了同样的问题,为此绞尽脑汁了好几个小时。最后发现问题不在于我的域名配置,而在于从同一 IP 提供服务的另一个域名。
TLS 本质上允许多个域通过同一 IP 地址运行服务器,如果其他域之一坚持使用旧版本的 TLS 或 SSL,则服务器可能会首先提供这些版本,从而导致浏览器拒绝。
解决方案是确保 IP 上的所有服务器都配置了:
ssl_协议TLSv1.2TLSv1.3;
在他们的 nginx 配置中。