Nginx 中的 SSL/TLS 版本

Nginx 中的 SSL/TLS 版本

我安装了 Nginx 并启用了 SSL。

server {
  server_name vorb.de;
  listen      443;

  root        /var/www/vorb.de/pub;

  ssl         on;
  ssl_certificate     cert.pem;
  ssl_certificate_key cert.key;

  gzip        on;
  […]
}

到目前为止一切正常。唯一让我恼火的是,当您单击锁/https 图标时,Chrome 会显示服务器正在使用 SSL 3.0。此版本的 SSL 已弃用(请参阅https://vorb.de)。当我访问错误页面时,一切都正常,因为它显示正在使用 TLS 1.0(请参阅https://vorb.de/non-existing-page)。我正在运行 Debian 6 Squeeze、Nginx 0.7.67 和 OpenSSL 0.9.8o。

你知道为什么会发生这种情况吗?

答案1

我遇到了类似的问题,注释下面的代码有助于修复错误。最终代码如下所示 -

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers PROFILE=SYSTEM;

答案2

我彻底重装了系统,现在使用的是 Nginx 1.0.6。这个方法有效,但是非常耗时。

答案3

您可以通过使用指令来控制服务器允许的版本ssl_ciphers

类似这样的操作应该会让你的服务器仅允许 TLS 连接:

ssl_ciphers  HIGH:!SSLv2:!SSLv3;

至于为什么您的浏览器在两个不同的连接上协商不同的协议,我无法告诉您。

答案4

在 ssl_timeout 和 ssl_ciphers 之间添加代码就足以获得 443 访问权限

ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers PROFILE=SYSTEM;

此外,在我的情况下,使用的证书是通过 openSSL 进行的,因此连接不一定是“安全的”,但这对我来说确实有效

感谢 init ssl_protocol 解决方法@Soman Dubey

相关内容