浏览器
MOZILLA_PKIX_ERROR_MITM_DETECTED:有东西在拦截你的 HTTPS
MOZILLA_PKIX_ERROR_MITM_DETECTEDMOZILLA_PKIX_ERROR_MITM_DETECTED 的意思是:Firefox 认为你和网站之间有东西在解密、再重新签发你的 HTTPS 流量。 Firefox 收到的证书不是网站的 CA 签发的,而是来自安全软件、公司代理或者你没装过的某个东西所安装的根证书。网站本身没有问题。
先判断是网站的问题还是你电脑的问题
是你的设备或网络的问题。先用 SSL 检测 看网站的真实证书:
curl ssl.sh/example.com
再在 Firefox 警告页点 “高级…” → “查看证书”,对比颁发者。检测显示的是公开 CA,Firefox 里却是别的名字(比如带杀毒软件品牌、“Proxy”、“Inspection”或你们公司名的),拦截者就找到了。
原因
这个错误背后有 5 类拦截者,最常见的是杀毒软件的 HTTPS 扫描。
1. 杀毒软件 HTTPS 扫描
很多安全套件的网页防护会扫描加密流量。它们的根证书不在 Firefox 的库里,Firefox 就会报拦截。升级产品、修复它的浏览器集成,或者关闭 HTTPS 扫描。详见 杀毒软件 HTTPS 扫描。
2. 公司 SSL 解密
公司防火墙、上网行为管理设备、安全网关会解密流量做审计和病毒扫描。IT 应该通过企业策略把解密用的根证书部署到 Firefox。见 公司 SSL 解密。
3. 家长控制或网络过滤软件
家用的上网管控软件和部分路由器用的也是同一套方法。在它们的设置里找“HTTPS 过滤”之类的选项。
4. 恶意软件或广告软件
一些流氓软件会装根证书来注入广告或窃取数据。认不出颁发者时,检查已安装程序和浏览器扩展,用可信的安全软件全盘扫描,并把来历不明的根证书从系统证书库删掉(Windows 运行 certmgr.msc 查看“受信任的根证书颁发机构”)。
5. 调试代理
开发用的抓包工具为了解密 HTTPS 会装自己的根证书。用完关掉,或者只在专门的测试配置文件里信任它。
在各浏览器/系统上的样子
| 浏览器 | 显示内容 |
|---|---|
| Firefox | “警告:面临潜在的安全风险”,代码 MOZILLA_PKIX_ERROR_MITM_DETECTED,提示你设备上的软件或网络可能在拦截连接 |
| Chrome / Edge / 360 / QQ 浏览器 | 通常正常打开(信任系统根证书);系统里也没有那张根证书时报 NET::ERR_CERT_AUTHORITY_INVALID |
| Safari | 根证书在钥匙串里受信任时能打开 |
站长怎么修
这个错误发生在访客本地,站长要做的是确认自己的证书链正常,并帮访客或 IT 找到拦截来源。
1. 服务器不用改。 只要 curl ssl.sh/example.com 显示有效的公开证书链,就向受影响的用户说明拦截发生在他们本地。
2. 给部署 SSL 解密的 IT 管理员: 把根证书明确部署到 Firefox。最简单的 policies.json:
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true
}
}
}
3. 把敏感网站排除在解密之外,比如网银、医疗网站和做了证书固定的 App,这样也能减少故障。
常见问题
出现 MITM_DETECTED 是不是被黑了?
通常不是,多数情况是你自己的杀毒软件或公司的安全系统。但如果你认不出颁发者名称、电脑上也没装这类软件,就要当作可能中了恶意软件:全盘查杀,并在一台干净的设备上修改重要密码。
要不要开启 security.enterprise_roots.enabled?
公司电脑、IT 明确在做流量检查的,可以开,更好的做法是让 IT 通过 Firefox 策略部署根证书。个人电脑上,先确认那张多出来的根证书属于你主动安装的软件,再决定是否开启。
为什么 Chrome、Edge 不报错?
它们信任添加到操作系统里的根证书,而拦截软件正是把证书装在那里。Firefox 用自己的根证书库,所以能发现证书被替换了。
网站站长能看到这个错误吗?
看不到。这跟网站无关,Firefox 收到的证书不是网站发的。运行 curl ssl.sh/example.com 能看到网站实际使用的证书。