Nginx SSL握手错误

5
我在服务器日志中看到以下错误:
[严重] 915#0: *46701 SSL_do_handshake() 失败 (SSL: error:140A1175:SSL routines:SSL_BYTES_TO_CIPHER_LIST:不合适 fallback),客户端:187.50.199.66,服务器: 0.0.0.0:443
这是什么意思?我该如何解决?
请帮忙。

我曾经在我的NginX中遇到过类似的错误。那时,将NginX升级到最新版本帮助我解决了这个问题。也许你应该尝试升级到最新可用的NginX版本。 - slayedbylucifer
我已经更新了它,但问题仍然存在。 - Ligo George
1
在此提交中,openssl添加了错误消息:https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=cf6da05304d554aaa885151451aa4ecaa977e601 该错误消息似乎与至少一些浏览器不兼容。 - citrin
听起来这是Nginx中的一个bug,并且以critical形式记录:http://trac.nginx.org/nginx/ticket/662 - Carson Reinke
遇到了同样的问题。通过将“listen 443 ssl;”替换为这两行代码来解决它:“listen 443; ssl on;”。但是我不知道这与问题有什么关系。也许还有其他问题(它是在Docker容器中运行的nginx)。 - rudi
1个回答

3
它看起来与 OpenSSL中的安全漏洞有关。这与您的nginx配置无关,只是表明您的服务器拥有客户端,其未正确处理SSL握手。 什么是SSL握手? 基本上,它是在每个会话开始时在客户端和服务器之间交换一些消息。它由6个阶段组成:
  1. 客户端问候
  2. 服务器问候
  3. 认证和预主密钥
  4. 解密和主密钥
  5. 生成会话密钥
  6. 使用会话密钥进行加密
请在 http://www.symantec.com/connect/blogs/how-does-ssl-work-what-ssl-handshake阅读更多信息。
总之,您的服务器正在发出此警告,以指示某些客户端正在(故意或非故意地)破坏此程序(例如,过早地结束连接或尝试在一个会话中打开它多次)。

如何解决这个问题?

如果你真的想要摆脱这条消息(不建议这样做),你可以在nginx.conf文件中更改错误日志级别(level of error logging)为类似以下内容:

error_log logs/error.log alert;

*可用级别为:调试 | 信息 | 注意 | 警告 | 错误 | 严重 | 警报 | 紧急。

http://nginx.org/en/docs/ngx_core_module.html#error_log


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接