|
|
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在网站运维中,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. 协议或加密套件不兼容
报错表现:
可能原因:
- 旧版客户端不支持 TLS1.2/TLS1.3。
- 服务器禁用了必要的加密算法。
排查方法:
- 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 s_client -connect yourdomain:443 -servername yourdomain
复制代码
- 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 等工具能快速定位问题。
- 通过正确配置证书链、定期续期和启用现代协议,可以有效避免大部分报错。
|
|