“您的连接不是私密连接”是最常见的 SSL 错误。它表示浏览器检测到网站的 SSL 证书存在问题,拒绝建立安全连接。该错误在 Chrome 中显示为 NET::ERR_CERT_*,在 Firefox 中显示为”警告:面临潜在的安全风险”,在 Safari 中显示为”此连接不是私密连接”。
本指南涵盖两端的修复方法:如果你是看到错误的访客,以及如果你是网站管理员而访客报告此错误。
如果你是访客(快速修复)
这些步骤修复的是客户端原因——你设备上的问题,而非网站的问题。
1. 刷新页面
该错误有时是暂时的——TLS 握手期间的网络故障。按 F5 或 Ctrl+R。
2. 检查设备的日期和时间
SSL 证书有有效期。如果你电脑的时钟不对,浏览器会认为证书已过期或尚未生效。修复:
- Windows: 设置 → 时间和语言 → 自动设置时间
- macOS: 系统设置 → 通用 → 日期与时间 → 自动设置
- Linux:
sudo timedatectl set-ntp true
3. 尝试隐身/无痕模式
如果在隐身模式下正常但普通模式不行,说明有浏览器扩展在干扰——通常是检查 HTTPS 流量的杀毒软件、VPN 或广告拦截器。逐个禁用扩展找出问题。
4. 清除浏览器缓存和 SSL 状态
浏览器可能缓存了旧证书:
- Chrome: 设置 → 隐私 → 清除浏览数据 → 缓存的图片和文件
- Windows: Internet 属性 → 内容 → 清除 SSL 状态
- macOS: 钥匙串访问 → 搜索该域名 → 删除缓存条目
5. 检查网络
企业代理、酒店 Wi-Fi 强制门户和一些 VPN 会注入自己的证书。尝试:
- 断开 VPN 再试
- 切换到其他网络(如手机热点)
- 如果在酒店/机场 Wi-Fi,先连接强制门户
6. 更新浏览器
旧版浏览器可能不信任较新的证书颁发机构或不支持现代 TLS。更新到最新版本。
应该点击”继续前往”吗? 只有当你理解风险并信任该网站时才可以(例如你自己的开发服务器使用自签名证书)。绝不要在银行、邮箱或购物网站上绕过警告。
如果你是网站管理员(服务端修复)
你的访客看到此错误是因为 SSL 配置有问题。以下是每种原因的诊断和修复方法。
原因 1:证书过期
最常见的原因。 Let’s Encrypt 证书每 90 天过期。
诊断:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates
修复: 续签你的证书。使用 GetHTTPS,只需 5 分钟。然后替换文件并重新加载服务器。
原因 2:证书与域名不匹配
证书签发给了 example.com 但你访问的是 www.example.com(或反之)。
诊断:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -ext subjectAltName
修复: 获取包含裸域名和 www 的新证书。在 GetHTTPS 中,同时添加 example.com 和 www.example.com。
原因 3:证书链不完整
你的服务器没有发送中间证书。浏览器无法构建从你的证书到根证书颁发机构的信任路径。
诊断:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Verify return code"
# "21 (unable to verify the first certificate)" = chain incomplete
修复:
- Nginx: 在
ssl_certificate中使用fullchain.pem(而非cert.pem) - Apache: 添加
SSLCertificateChainFile chain.pem
原因 4:自签名证书
自签名证书不被浏览器信任——没有证书颁发机构为其背书。
修复: 替换为来自 Let’s Encrypt(免费)或商业证书颁发机构的真实证书。
原因 5:提供了错误的证书
如果你在一台服务器上托管多个网站,可能提供了错误的证书(SNI 配置错误)。
诊断:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -subject
# Check the CN matches your domain
修复: 确保每个 server 块(Nginx)或 <VirtualHost>(Apache)都有对应域名的正确 ssl_certificate。
原因 6:TLS 版本过旧
你的服务器只支持已被浏览器放弃的旧 TLS 版本(1.0/1.1)。
修复:
# Nginx
ssl_protocols TLSv1.2 TLSv1.3;
# Apache
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
原因 7:Cloudflare “Flexible” SSL 模式
Cloudflare 的”Flexible”模式在源站没有有效证书时会导致此错误。
修复: 在源站安装证书(GetHTTPS 或 Cloudflare Origin CA)并切换到”Full (Strict)“模式。
原因 8:HSTS 缓存了错误状态
如果你之前发送了 HSTS 头但后来 HTTPS 出了问题,浏览器会拒绝回退到 HTTP 连接。
修复: 使用有效证书恢复 HTTPS。如果在测试中,使用短的 HSTS max-age(如 300 秒)直到你确认一切正常。
错误代码参考
| Chrome 错误代码 | 含义 | 常见修复 |
|---|---|---|
NET::ERR_CERT_DATE_INVALID | 证书过期或尚未生效 | 续签证书 或修复系统时钟 |
NET::ERR_CERT_COMMON_NAME_INVALID | 域名与证书不匹配 | 获取正确域名的证书 |
NET::ERR_CERT_AUTHORITY_INVALID | 自签名或不受信任的证书颁发机构 | 使用受信任的证书颁发机构如 Let’s Encrypt |
NET::ERR_CERT_REVOKED | 证书已被吊销 | 获取新证书 |
NET::ERR_SSL_PROTOCOL_ERROR | TLS 握手失败 | 检查服务器 TLS 配置 |
NET::ERR_SSL_VERSION_OR_CIPHER_MISMATCH | 无共同的 TLS 版本/加密套件 | 在服务器上启用 TLS 1.2+ |
SSL_ERROR_HANDSHAKE_FAILURE_ALERT | (Firefox) 握手被拒绝 | 检查服务器证书和配置 |
常见问题
点击”继续”/“接受风险”安全吗?
仅在你信任该网站并理解风险时——如你自己的开发服务器使用自签名证书。绝不要在银行、电商、邮箱或社交媒体网站上绕过警告。警告存在是因为可能有人在拦截你的流量。
我的网站显示此错误,如何最快修复?
前往 GetHTTPS,获取新的免费证书,安装它,重新加载 Web 服务器。5 分钟搞定。如果错误持续,检查错误代码——它会告诉你确切的问题(过期、域名错误、缺少证书链等)。
某些设备上出现错误但其他设备正常
通常是证书链问题——你的服务器没有发送中间证书。一些浏览器/系统从之前的访问中缓存了中间证书,但新设备没有。通过在服务器上使用 fullchain.pem 来修复。
我的证书有效但仍然看到错误
检查:域名不匹配(www 与非 www)、证书链不完整、HSTS 缓存了之前的失败、或者代理/CDN 提供了不同的证书。使用 openssl s_client 查看服务器实际提供的证书。