在 Nginx 上禁用 SSLv3

Disable SSLv3 on Nginx

为什么我的服务器上仍然启用了 SSLv3?我想禁用是因为在某些电脑上因为安全问题打不开我的页面

我找到这个 guide:



但目前我已经设置好了。我的服务器托管在 Google 云端,我目前有这个 Nginx 配置文件:

...
ssl on;
ssl_certificate /etc/nginx/dba_certs/dba_ssl2/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/dba_certs/dba_keys/dba.key;

ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
...

OpenSSL 版本为 1.0.1f 2014 年 1 月 6 日。

有什么问题吗?

我可以确认 SSL3 已启用。要禁用,您需要修改 NGINX 配置(nginx.conf)或 VirtualHost 配置文件。在您的情况下,它可能是以下文件:

$ sudo vim /etc/nginx/sites-enabled/dragonboundaimbot.com

        ...
        listen 443 default_server ssl;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ...

$ sudo service nginx restart

SSL3 并不是唯一的问题。一些密码套件已贬值,不应使用。尝试将密码套件减少为以下内容:

TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d)  256
TLS_RSA_WITH_AES_256_CBC_SHA (0x35)     256
TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c)  128
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f)     128
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa)     112
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)   ECDH 256 bits (eq. 3072 bits RSA)   FS     256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)   ECDH 256 bits (eq. 3072 bits RSA)   FS    256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)   ECDH 256 bits (eq. 3072 bits RSA)   FS     128
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)   ECDH 256 bits (eq. 3072 bits RSA)   FS    128
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)   ECDH 256 bits (eq. 3072 bits RSA)   FS   112

对于其他改进,请检查例如使用 Chrome 浏览器的网站 and/or 运行 ssllabs.com.

的额外测试

要禁用 SSLv3,您必须编辑 默认服务器 配置,而不仅仅是任意虚拟主机配置。它只能为侦听套接字禁用,而不仅仅是虚拟服务器。您提供的配置片段表明您正在使用每台服务器包含的配置文件,因此您必须在适当的 listen 指令中找到带有 default_server 的配置文件,并在那里禁用 SSLv3:

server {
    listen 443 default_server ssl;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ...
}

或者,更好的是,在 nginx.conf 中编辑 http 级别的配置:

http {
    ...
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ...
}

您也可以考虑将 nginx 升级到最新版本。在 nginx 1.9.1+ 中,默认禁用 SSLv3。

我已经创建了要在 Qualys SSL 测试中获得 A 评级的步骤要点。以及以正确方式禁用 SSLv3 和启用 TSLv1 的步骤

添加 SSL 密码:

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

修复 OpenSSL Padding Oracle 漏洞:

https://gist.github.com/ArturT/bc8836d3bedff801dc324ac959050d12

添加 SSL 协议:

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

设置首选密码:

ssl_prefer_server_ciphers on;

在服务器块中,我们应该启用 TCP v6 和 v4 支持

listen 443 ssl;

listen [::]:443 ssl;

在上面的块

中添加default_server

listen 443 default_server ssl;

listen [::]:443 default_server ssl;

或阅读此处:

https://gist.github.com/kaushikgandhi/663e6e47d8a42025e848e454f5e064c4