浏览器

“警告:面临潜在的安全风险”:Firefox 各错误代码含义和修法

作者: · 最后核实

报错信息警告:面临潜在的安全风险

“警告:面临潜在的安全风险”表示 Firefox 无法确认网站证书可信,所以在加载页面之前停了下来。 不同的问题用的都是这个标题,点“高级…”后显示的代码才说明具体是哪一种。

先判断是网站的问题还是你电脑的问题

外部检测也发现问题,是网站证书要修;外部检测正常,原因在你的电脑或网络。先用 SSL 检测 独立测一下网站:

curl ssl.sh/example.com
  • 检测也发现问题(过期、域名不符、签发者不受信任):网站证书的问题。涉及登录或付款的网站,访客不要绕过警告。
  • 检测显示证书正常:原因在本地。先看电脑日期,再看有没有杀毒软件或公司代理在拦截 HTTPS。Firefox 能识别出很多这类拦截,会显示 MOZILLA_PKIX_ERROR_MITM_DETECTED。

原因

这个警告背后最常见的代码是 SEC_ERROR_UNKNOWN_ISSUER。下面 5 个代码按出现频率排序,点“高级…”后对照查找。

1. SEC_ERROR_UNKNOWN_ISSUER

Firefox 无法把证书连到受信任的根:私有 CA 缺中间证书、自己签的证书,或者 Firefox 不认识的拦截根证书。详见 SEC_ERROR_UNKNOWN_ISSUER。

2. SSL_ERROR_BAD_CERT_DOMAIN

证书签给了别的域名。详见 SSL_ERROR_BAD_CERT_DOMAIN。

3. SEC_ERROR_EXPIRED_CERTIFICATE

证书过期,或者你的电脑时间不对。详见 SEC_ERROR_EXPIRED_CERTIFICATE。

4. MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT

自签名证书,路由器、NAS、测试服务器最常见。详见 自签名证书报错。

5. MOZILLA_PKIX_ERROR_MITM_DETECTED

安全软件或代理正在拦截连接。详见 MITM_DETECTED。

其他代码

SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE(中间证书过期)、MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE(电脑时间慢了)、SEC_ERROR_INADEQUATE_KEY_USAGE 也会出现在这个页面上。

在各浏览器/系统上的样子

同一个证书问题,Firefox 显示“警告:面临潜在的安全风险”,Chrome 和 Safari 显示各自的警告页。

浏览器 对应页面
Firefox “警告:面临潜在的安全风险”;HSTS 网站显示“未连接:有潜在的安全问题”
Firefox(协议错误) “建立安全连接失败”,例如 PR_END_OF_FILE_ERROR
Chrome / Edge / 360 / QQ 浏览器 “您的连接不是私密连接”
Safari “此连接非私人连接”

站长怎么修

站长要先在浏览器之外复现问题,再发送完整证书链、补全 SAN,最后用 Firefox 复测。

1. 在浏览器之外复现。 curl ssl.sh/example.com 能看出哪一项没通过。Firefox 是很好的测试客户端:它不通过 AIA 下载缺失的中间证书(不过会预加载公开 CA 的中间证书)。

2. 发送完整、有效的证书链。 Nginx 用 fullchain 文件:

ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

CA 只给了站点证书的话,用 证书链工具 生成正确的证书链。宝塔面板粘贴证书时,“证书(PEM 格式)”一栏要包含中间证书。

3. 所有域名都写进 SAN,到期前续期,用 ACME 自动化。

4. 每次改完都用 Firefox 测。 用隐私窗口可以避开缓存;之前给这个网站加过例外的,先到“设置 → 证书 → 查看证书 → 服务器”里删掉再测。

常见问题

可以点“接受风险并继续”吗?

只有访问你自己管理的设备或服务时可以点,比如家里的路由器、自己搭的测试服务器,并且你清楚证书为什么不被信任。网银、购物、邮箱以及任何要登录的网站,都应该点“后退”,等网站方修好。

为什么 Chrome 能打开,Firefox 却警告?

Firefox 有自己的根证书库,默认不一定会用你在 Windows 或 macOS 里添加的根证书。杀毒软件和公司代理的根证书是最常见的原因。见 只有 Firefox 报 SEC_ERROR_UNKNOWN_ISSUER。

不小心点了接受风险,怎么撤销?

打开“设置”,搜索“证书”,点“查看证书”,切到“服务器”选项卡,删掉这个网站的条目。下次访问会重新出现警告。

为什么有的网站连“接受风险并继续”按钮都没有?

这个网站启用了 HSTS:要么你以前访问时收到过 Strict-Transport-Security 响应头,要么它在 Firefox 内置的 HSTS 预加载列表里。对这类网站 Firefox 不允许添加例外,因为站长已经声明“必须始终使用有效证书”。只能等网站修好,或者修正你这边的时间、拦截软件。见 HSTS 报错。

资料来源

  1. Mozilla Support: What does "Your connection is not secure" mean?
  2. Mozilla Support: Error codes on secure websites
  3. Mozilla Support: Set up Certificate Authorities (CAs) in Firefox