我们最近更改了 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”,所以我犹豫是否要恢复到我们的旧配置。
Ste*_*ich 12
浏览器通常会进行 SSLv23 握手。通过这次握手,他们宣布了他们支持的最佳协议版本(今天主要是 TLS1.2),但不限制服务器使用这个版本。因此,具有正确实现和配置的 TLS 堆栈但仅支持 TLS1.0 的服务器将简单地回复 TLS1.0,并且连接将在第一次尝试时成功。
但是,服务器端存在一些错误的 TLS 堆栈或错误配置或一些错误的中间件(负载平衡器等),导致此 SSLv23 握手失败。在这种情况下,浏览器会降级握手中使用的协议,即它们尝试使用显式 TLS1.0 握手,然后是显式 SSL3.0 握手(某些浏览器已经禁用 SSL3.0,因此不要尝试此操作)。
如果较新的浏览器进行此类降级连接,则它们将使用 TLS_FALLBACK_SCSV 伪密码。如果支持 TLS_FALLBACK_SCSV 的服务器检测到降级的连接与它支持的较低协议版本(例如降级使用 TLS1.0 但服务器支持 TLS1.2),则它假定发生了类似 POODLE 的攻击并将关闭连接。
但是,为什么客户端在联系您的服务器时首先会降级?
| 归档时间: |
|
| 查看次数: |
15572 次 |
| 最近记录: |