您好!欢迎访问否玩代码!
广告位

网站提示“无法建立安全连接”?三步解决ERR_SSL_PROTOCOL_ERROR

栏目: 日期: 浏览:104

倘若当你在对自身网站予以访问之际, 目睹呈现出“无法建立安全连接”以及ERR_SSL_PROTOCOL_ERROR这种情境时, 先别着急, 这种状况一般而言并非是服务器出现故障了, 而是SSL配置或者浏览器缓存方面出现了问题。身为站长,要是谙熟这一套排查流程, 是能够节省下大量时间的。

1. 什么是ERR_SSL_PROTOCOL_ERROR?

HTTPS握手环节当中浏览器无法和服务器成功建立连接, 是因协议版本或者加密套件出现了不匹配的状况从而导致的错误, 在IETF RFC 5246(也就是TLS 1.2协议标准)的规定下, 握手失败的原因可能来自于:

服务器TLS版本过低(如仅支持TLS 1.0/1.1)

客户端与服务器支持的加密套件无交集

中间代理或防火墙篡改证书

2. 三步排查法

第一步:检查服务器TLS配置

使用OpenSSL命令快速测试:

openssl s_client -connect yourdomain.com:443 -tls1_2

要是输出“handshake failure”, 也即表明服务器没有启用TLS 1.2或者1.3。依据NIST SP 800 - 52指南, 建议将TLS 1.0/1.1禁用, 仅仅启用TLS 1.2以及1.3。

Nginx配置示例:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

第二步:清除浏览器SSL状态

Chrome这类浏览器的用户, 操作是这样的, 先找到设置选项, 接着去到隐私以及安全的相关设置页面, 然后进行清除浏览数据, 在清除浏览数据时, 要勾选“Cookie及其他网站数据” 和“缓存的图片和文件”这两项, 选择时间范围的时候选“所有时间”, 而Edge浏览器和Firefox火狐浏览器的操作与之相同, 也是这么做的。

第三步:检查系统时间与证书

ERR_SSL_PROTOCOL_ERROR同样能够被客户端系统时间出现的问题所引发, 去运行下面这些命令来确认一下证书是不是有效的。

echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

要保证, notBefore这个时间以及notAfter这个时间, 对当前的、属于UTC的时间, 进行覆盖。

3. 进阶排查:中间设备干扰

诸如Cloudflare、Nginx这类的CDN或者反向代理, 要是没能准确无误地传递SSL信息, 那么也存在引发这种错误的可能性。去查看服务器日志:

tail -f /var/log/nginx/error.log | grep "SSL"

如果察觉到“no suitable share cipher”或者“unsupported protocol”这种情况, 那就去对代理层相关的TLS配置进行核查, 要保证其和上游服务器保持一致。

否玩代码编辑 https://www.fouwan.com