SSL 证书错误会阻止访客安全访问你的网站。本指南涵盖每个常见错误代码的含义和修复方法——无论你是访客还是网站管理员。
关于最常见的特定错误,请参阅我们的专题指南:“您的连接不是私密连接”修复 →
错误参考表
| 错误代码 (Chrome) | Firefox 等效 | 含义 | 修复 |
|---|---|---|---|
NET::ERR_CERT_DATE_INVALID | SEC_ERROR_EXPIRED_CERTIFICATE | 证书过期 | 续签证书 |
NET::ERR_CERT_COMMON_NAME_INVALID | SSL_ERROR_BAD_CERT_DOMAIN | 域名与证书不匹配 | 获取正确域名的证书 |
NET::ERR_CERT_AUTHORITY_INVALID | SEC_ERROR_UNKNOWN_ISSUER | 自签名或不受信任的证书颁发机构 | 使用 Let’s Encrypt |
NET::ERR_CERT_REVOKED | SEC_ERROR_REVOKED_CERTIFICATE | 证书已被吊销 | 获取新证书 |
NET::ERR_SSL_PROTOCOL_ERROR | SSL_ERROR_RX_RECORD_TOO_LONG | TLS 握手失败 | 检查服务器配置 |
NET::ERR_SSL_VERSION_OR_CIPHER_MISMATCH | SSL_ERROR_NO_CYPHER_OVERLAP | 无共同的 TLS 版本/加密套件 | 启用 TLS 1.2+ |
ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN | — | HPKP pin 不匹配 | 更新或移除 HPKP pins |
ERR_CERTIFICATE_TRANSPARENCY_REQUIRED | — | 缺少 CT 日志条目 | 从符合 CT 要求的证书颁发机构重新签发 |
详细错误解决方案
ERR_CERT_DATE_INVALID — 证书过期
原因: 证书的 Not After 日期已过。使用 90 天的 Let’s Encrypt 证书,如果忘记续签就会发生。
访客修复: 检查设备的日期和时间——如果时钟不对,有效的证书也会显示为过期。
管理员修复:
# Check the actual expiry
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate
立即续签,替换文件,重新加载服务器。设置监控以防止未来再次发生。
ERR_CERT_COMMON_NAME_INVALID — 域名不匹配
原因: 证书签发给了 example.com 但你访问的是 www.example.com(或反之),或证书覆盖的是完全不同的域名。
管理员修复:
# Check which domains the certificate covers
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -ext subjectAltName
获取包含所有所需域名的新证书。在 GetHTTPS 中,同时添加 example.com 和 www.example.com。
ERR_CERT_AUTHORITY_INVALID — 不受信任的证书颁发机构
原因: 证书是自签名的、由未知证书颁发机构签发的、或中间证书链不完整。
管理员修复:
- 如果是自签名 → 替换为 Let’s Encrypt 证书
- 如果证书链不完整 → 使用
fullchain.pem(Nginx)或添加SSLCertificateChainFile(Apache) - 如果是未知证书颁发机构 → 切换到受信任的证书颁发机构
ERR_SSL_PROTOCOL_ERROR — 握手失败
原因: 服务器的 TLS 配置损坏——错误的证书路径、损坏的文件或配置错误。
管理员修复:
# Test the TLS connection
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
# Check if the certificate and key match
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
# Hashes must match
常见原因:服务器配置中文件路径错误、证书和密钥来自不同会话、文件权限过于严格。
ERR_SSL_VERSION_OR_CIPHER_MISMATCH — 无兼容的 TLS
原因: 服务器只支持浏览器已放弃的旧 TLS 版本(1.0/1.1),或使用浏览器不支持的加密套件。
管理员修复:
# Nginx — enable modern TLS
ssl_protocols TLSv1.2 TLSv1.3;
# Apache
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
混合内容警告
原因: 你的 HTTPS 页面通过 HTTP 加载图片、脚本或 CSS。
这不是证书错误——证书没问题,但页面引用了不安全的资源。完整混合内容修复指南 →
诊断流程
遇到任何 SSL 错误时,按以下顺序排查:
1. Check the error code → identifies the category
↓
2. Check the certificate details
openssl s_client -connect domain:443 -servername domain
↓
3. Is it expired? → Renew
Domain mismatch? → Re-issue for correct domain
Chain incomplete? → Use fullchain.pem
Self-signed? → Switch to Let's Encrypt
Config error? → Check file paths and permissions
↓
4. After fixing → reload server, clear browser cache, verify
在线诊断工具
| 工具 | URL | 检查内容 |
|---|---|---|
| SSL Labs | ssllabs.com/ssltest | 完整 SSL 审计(A-F 评分) |
| SSL Checker | sslshopper.com/ssl-checker | 证书链、过期、域名匹配 |
| Certificate Search | crt.sh | Certificate Transparency 日志 |
| Why No Padlock | whynopadlock.com | 混合内容检测 |
常见问题
修复了错误但浏览器仍然显示
清除浏览器缓存(Ctrl+Shift+Delete)或在隐身窗口中测试。浏览器缓存 SSL 状态,HSTS 可能强制执行缓存的决定。在 Windows 上,还要清除 SSL 状态:Internet 属性 → 内容 → 清除 SSL 状态。
某些浏览器出现错误但其他浏览器没有
不同浏览器有不同的信任存储和缓存。最常见的原因:不完整的证书链,某些浏览器可以从缓存中填充而其他浏览器不能。通过在服务器上提供完整的证书链来修复。
如何防止 SSL 错误?
- 监控证书过期 — 设置第 60 天(共 90 天)的告警
- 使用
fullchain.pem而不是cert.pem— 防止证书链错误 - 在证书中包含所有域名变体(www + 非 www)
- 为生产服务器设置使用 Certbot 自动续签
- 每次更改后用 SSL Labs 测试