有些用户抱怨说,由于“安全连接失败”(即 SSL),他们无法访问我们的网站。提供的实际错误代码是SSL_ERROR_NO_CYPHER_OVERLAP
。
服务器是 ubuntu 18.04 的 nginx。已通过 laravel forge LetsEncrypt 按钮安装 SSL。
我已经使用以下方式测试了我们的 4 个网站https://www.ssllabs.com并且似乎都出现了相同的错误。
错误仅与某些浏览器/操作系统(通常是旧版本)有关,即
Chrome 49 / XP SP3 Server sent fatal alert: handshake_failure
我还注意到我的网站仅支持 TLS 1.2 协议,因此我猜测这些旧版浏览器使用的是旧版协议。
| Protocols | |
|----------------------------------------------|-----|
| TLS 1.3 | No |
| TLS 1.2 | Yes |
| TLS 1.1 | No |
| TLS 1.0 | No |
| SSL 3 | No |
| SSL 2 | No |
| For TLS 1.3 tests, we only support RFC 8446. | |
是否有人遇到过此问题或对如何进一步诊断有任何建议。
答案1
解决此问题的一个潜在方法是编辑 SSL 证书配置:
sudo nano /etc/nginx/sites-enabled/yoursite.com
我按照 Mozilla 的建议将 TLS 版本和密码证书修改为中间设置。它现在仅出现在现代浏览器中,作为默认的 Forge 设置,这意味着许多设置无效。
https://mozilla.github.io/server-side-tls/ssl-config-generator/
重新运行https://www.ssllabs.com/测试显示浏览器兼容性没有错误,但密码强度级别略有降低。所以我猜兼容性更强,但安全性稍差。
如果有人对更好的方法有任何意见,请提供建议。