lin 发表于 2025-9-22 17:20:16

SSL 证书报错原因及排查方法

在网站运维中,SSL/TLS 证书报错 是常见问题之一。证书错误会导致浏览器弹出“不安全连接”提示,严重影响用户信任和业务访问。本文将介绍常见的 SSL 报错类型、可能原因及排查思路。
一、常见 SSL 报错类型

[*]NET::ERR_CERT_COMMON_NAME_INVALID
[*]NET::ERR_CERT_DATE_INVALID
[*]NET::ERR_CERT_AUTHORITY_INVALID
[*]SSL Handshake failed / Unable to verify certificate
[*]Mixed Content(混合内容警告)
[*]自签名证书警告
[*]Chain issues(证书链错误)
二、主要报错原因与分析
1. 域名不匹配(Common Name Invalid)
报错表现:

[*]“此连接不是私密连接…证书上的域名与请求的域名不匹配”
可能原因:

[*]访问的域名未包含在证书的 CN(Common Name) 或 SAN(Subject Alternative Name) 中。
[*]使用了二级域名或泛域名证书错误。
排查方法:

[*]使用 openssl s_client -connect yourdomain:443 -servername yourdomain 查看证书信息。
[*]确认证书签发时包含正确的域名。
2. 证书过期(Date Invalid)
报错表现:

[*]“证书已过期” 或 “Your connection is not private”
可能原因:

[*]证书有效期已过或未生效。
[*]服务器系统时间错误。
排查方法:
查看证书有效期:
openssl x509 -in yourcert.pem -noout -dates
[*]确保服务器时间同步(例如使用 ntpd 或 chrony)。
[*]及时续期证书(Let’s Encrypt 等免费证书有效期只有 90 天)。
3. 非受信任 CA(Authority Invalid)
报错表现:

[*]“证书不是由受信任的证书颁发机构签发”
可能原因:

[*]使用了自签名证书或不受信任的小厂 CA。
[*]证书链未正确配置(缺少中间证书)。
排查方法:

[*]确保使用权威 CA(如 DigiCert、Let’s Encrypt)。
[*]安装完整证书链(fullchain.pem)。
[*]使用 SSL Labs 测试站点检查链配置。
4. 证书链不完整(Chain Issues)
报错表现:

[*]某些浏览器正常,但部分设备或旧版浏览器报错。
原因:

[*]Nginx 或 Apache 仅加载了服务端证书,未包含中间证书。
解决方法:

[*]确保证书文件包含服务端证书 + 中间证书:
ssl_certificate /etc/nginx/ssl/fullchain.pem;5. 协议或加密套件不兼容
报错表现:

[*]“SSL Handshake failed”
可能原因:

[*]旧版客户端不支持 TLS1.2/TLS1.3。
[*]服务器禁用了必要的加密算法。
排查方法:

[*]检查 Nginx/Apache 配置:
ssl_protocols TLSv1.2 TLSv1.3;
[*]使用 openssl s_client -connect yourdomain:443 测试握手。
6. 混合内容(Mixed Content)
报错表现:

[*]页面加载时部分资源(如图片、脚本)使用 HTTP 而非 HTTPS。
解决方法:

[*]确保所有资源使用 HTTPS 链接。
[*]在 Nginx 中强制 HTTPS:
add_header Content-Security-Policy upgrade-insecure-requests;7. 证书未正确安装
报错表现:

[*]部分设备提示“无法建立安全连接”。
原因:

[*]错误的证书路径或格式。
[*]PEM/CRT 文件内容不完整或顺序错误。
排查方法:

[*]确认 Nginx/Apache 配置路径与文件一致。
[*]检查证书文件格式(PEM 编码)。
三、分析和调试工具

[*]OpenSSL
openssl s_client -connect yourdomain:443 -servername yourdomain
[*]curl

curl -vk https://yourdomain
[*]浏览器开发者工具:F12 → Security → 查看证书链。
[*]SSL Labs 测试:全面检查证书有效性与兼容性。
四、预防和最佳实践

[*]自动续期:使用 Certbot 或 acme.sh 配置自动续期。
[*]启用 HSTS:强制浏览器使用 HTTPS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
[*]测试兼容性:在不同浏览器、设备上测试。
[*]定期巡检:建立监控,提前提醒证书即将过期。
五、总结

[*]SSL 报错通常由 域名不匹配、证书过期、非受信任 CA、证书链不完整 等问题引起。
[*]使用 openssl、curl、SSL Labs 等工具能快速定位问题。
[*]通过正确配置证书链、定期续期和启用现代协议,可以有效避免大部分报错。
页: [1]
查看完整版本: SSL 证书报错原因及排查方法