排错指南

「您的连接不是私密连接」:先找错误代码,再决定修哪里

浏览器弹出红色警告拦下访问,但不知道属于哪一种证书问题。

浏览器拦下一个 HTTPS 网站时,会用一个红色页面告诉你「您的连接不是私密连接」。Firefox 说的是「警告:面临潜在的安全风险」,措辞不同,含义一样:证书验证没通过,所以在你确认之前,浏览器不打算把内容交给你。

麻烦的地方在于,这一句话背后是七八种成因完全不同的故障 —— 证书过期、少签了域名、链不完整、签发机构不受信任……它们的修法互不相干,而这句话对所有情况都一模一样。

真正的线索是红屏下面那行大写代码。

先找到错误代码

浏览器代码在哪里
Chrome / Edge「您的连接不是私密连接」下方,NET::ERR_ 开头的一行;被折叠时点「高级」
Firefox点「高级…」,展开后的段落里,SEC_ERROR_SSL_ERROR_ 开头
Safari点「显示详细信息」,措辞比代码多,按下一节的症状对照

如果页面上完全没有 ERR_ 字样,而是写着「此网站无法提供安全连接」,那不是证书问题,跳到最后一节

按代码对号入座

错误代码实际发生了什么怎么修
NET::ERR_CERT_DATE_INVALID证书过期了,或者还没到生效时间证书过期 · 还没到生效时间
NET::ERR_CERT_COMMON_NAME_INVALID
SSL_ERROR_BAD_CERT_DOMAIN
证书是有效的,但上面没有你访问的这个域名证书不包含这个域名 · 泛域名不覆盖主域名
NET::ERR_CERT_AUTHORITY_INVALID
SEC_ERROR_UNKNOWN_ISSUER
追不到一个受信任的签发机构证书链缺中间证书 · 自签名证书 · 追溯不到受信任的根
NET::ERR_CERT_REVOKED证书被签发机构吊销了证书被吊销
NET::ERR_CERT_WEAK_KEY
NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM
密钥长度或签名算法已不被接受RSA 密钥长度不足
ERR_CERTIFICATE_TRANSPARENCY_REQUIRED证书没有出现在公开的透明度日志里证书透明度日志

NET::ERR_CERT_AUTHORITY_INVALID 那一行有三篇文章,因为它是最含糊的一个代码:自签名、私有 CA、公开 CA 但少发了中间证书,浏览器给出的反应完全相同。分辨方法在那三篇里都有对应的命令。

不想逐条对照的话,把域名填进证书检测,它会直接查出是哪一种,并给出对应的处理办法 —— 免登录,不用装东西。

先分清:只有你看到,还是所有人都看到

这一步比找代码更值得先做,因为它决定问题在谁那里。

换一个网络访问同一个地址 —— 用手机流量,或者让一个不在同一个办公室的人打开看看。

  • 别人正常,只有你不行 → 问题在你这一侧。三个常见原因:本机时钟不准(证书有效期是按时间判断的,差几天就会报 ERR_CERT_DATE_INVALID);杀毒软件或企业网关开了 HTTPS 扫描,用自己的证书替换了真的那张;连着会劫持流量的公共 Wi-Fi。
  • 所有人都不行 → 问题在服务器或证书上,按上一节的代码找对应的文章。

如果你是访客,不是这个站的管理员

你能做的只有排除自己这一侧:校准系统时间换个网络临时关掉杀毒软件的 HTTPS 扫描试一次。如果换了网络还是报错,那就是对方的站点配错了,你修不了,只能等他们修。

网上流传的做法是在红屏页面上直接敲 thisisunsafe(不是敲进地址栏)强行进入。它确实能进去,但它不解决任何问题,只是让浏览器不再提醒你

这个警告存在的意义,是「配置错误」和「有人正在中间解密你的流量」看起来完全一样,浏览器分不出来,你也分不出来。绕过它,就是放弃这个唯一的区分手段。在自己的开发机或内网服务上、并且你确切知道警告为什么出现时,这么做是合理的;在任何需要输入密码、付款或查看私人信息的站点上,不要。

如果你是站长

先确认自己看到的和访客看到的是同一件事 —— 你的浏览器可能缓存过中间证书,因而比访客更宽容:

# 服务器实际发出的完整证书链,以及验证结果
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates

# 只看链是否完整:结果不是 0 就说明访客那边会报错
echo | openssl s_client -connect example.com:443 -servername example.com 2>&1 \
  | grep "Verify return code"

Verify return code: 0 (ok) 以外的任何结果,都对应上面表格里的某一行。

「此网站无法提供安全连接」不是证书问题

这句话(Chrome 里通常伴随 ERR_SSL_PROTOCOL_ERROR)说的是握手本身就没谈成,根本没走到验证证书那一步。常见成因是客户端和服务器没有共同支持的 TLS 版本或加密套件 —— 比如服务器只留了 TLS 1.2/1.3,而访问者用的是很旧的系统或设备。

排查方向见关闭 TLS 1.0 / 1.1。如果连接干脆超时或被拒绝,而不是握手失败,那是无法连接

常见问题

检测一下你自己的域名

免登录,一次真实的 TLS 握手,直接给出结论:还有多少天到期、证书链是否完整、是否包含这个域名。

需要一张新证书?本站提供基于 Let's Encrypt 的免费签发,支持泛域名。

了解免费证书

其他排错指南

Last updated on