我们最近更改了 nginx 配置以支持 TLSv1.2 以及一些更安全的密码。自从更改后,我们的 nginx 错误日志中充满了以下错误:
2015年1月28日23时55分57秒[暴击] 16898#0:* 18712916 SSL_do_handshake()失败(SSL:错误:140A1175:SSL例程:SSL_BYTES_TO_CIPHER_LIST:不适当的回退),而SSL握手,客户端:。. . ,服务器:0.0.0.0:443
我们的nginx配置如下:
server {
root /var/www/fl/current/public;
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/wildcard.pem;
ssl_certificate_key /etc/nginx/ssl/wildcard.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
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';
ssl_prefer_server_ciphers on;
Run Code Online (Sandbox Code Playgroud)
我们收到了一些关于用户无法访问该网站的电子邮件。一位用户说这是他们在 Firefox 中遇到的错误:
安全连接失败
连接到******.com 时发生错误。服务器拒绝握手,因为客户端降级到低于服务器支持的 TLS 版本。(错误代码:ssl_error_independent_fallback_alert)
由于无法验证接收到的数据的真实性,因此无法显示您尝试查看的页面。
如果我理解正确,那么当客户端使用的 TLS 版本低于它和服务器支持的版本时,回退警报是一种安全预防措施。鉴于我们现在支持更高的协议版本,这个错误似乎很有意义。我不明白的是,为什么此更改会在连接到我们的网站时对某些用户造成问题。这是我们的配置或他们的浏览器的错误吗?
我们现在在 Qualys SSL 服务器测试中得分为“A”,所以我犹豫是否要恢复到我们的旧配置。