对于应该安全的网站(以 https:// 开始的URL),Firefox必然会验证其证书的有效性。如果证书的有效性无法确认,Firefox将停止连接并提示错误信息 警告:有风险 页面。点击
按钮,你可以参看 Firefox 遇到的具体问题。本文解释为什么会遇到错误码“SEC_ERROR_UNKNOWN_ISSUER”、 "MOZILLA_PKIX_ERROR_MITM_DETECTED" 或“MOZILLA_PKIX_ERROR_MITM_DETECTED”以及如何进行故障排除。
目录
该错误码是什么意思?
安全连接时,网站必须提供颁发自 certificate authority 的证书以保证已连接至目标网站并且连接是加密的。如果在错误提示 "警告:有风险" 页面点击 按钮后,看到错误码 "SEC_ERROR_UNKNOWN_ISSUER" 或“MOZILLA_PKIX_ERROR_MITM_DETECTED”,这意味着由于证书颁发者未知,所以Firefox默认连接不可信。
该错误码发生在多个安全网站
如果你在多个不关联的HTTPS网站都遇到这个问题,那么你的系统或网络处理连接和证书的方式受到Firefox的质疑。最常见的原因是安全管理软件对加密连接的扫描或恶意软件监听和替换网络证书。具体来说,错误码 "MOZILLA_PKIX_ERROR_MITM_DETECTED" 表示Firefox能够探测到连接被代理截获。
防病毒产品
第三方防病毒软件可能会干扰 Firefox 的安全连接。你可以尝试重新安装Firefox,这样可能会让安全软件将其添加到信任区。
我们建议你卸载第三方防病毒软件,转而使用windows内置的防病毒软件:
- Windows 8 and Windows 10 - Windows Defender (built-in)
如果你不想卸载第三方防病毒软件,那么你可以重新安装该软件——也许该软件会重新把其证书加入 Firefox 信任列表。
以下是一些你可以尝试的替代解决方案:
Avast/AVG
针对Avast或AVG安全产品,你可以通过以下步骤禁止它对安全连接的拦截:
- 打开Avast/AVG面板。
- 找到 ,然后点击 > > 。
- 下翻到防护设置部分,并点击 。
- 取消(不勾选) 打开HTTPS扫描 设置并点击 确认。
- 在较老的版本上,你应该打开> > 然后点击 旁边的 。
请参看Avast/AVG技术支持文章Managing HTTPS scanning in Web Shield in Avast Antivirus了解详情。更多详情参看Avast博客。
Bitdefender
针对Bitdefender安全产品,你可以通过以下步骤禁止它对安全连接的拦截:
- 打开Bitdefender的应用看板。
- 找到 并在 部分,点击 。
- 关闭加密网络扫描设置项。
- 在较老的版本上,该设置叫做扫描SSL,它可以通过 > 找到。
对Bitdefender Antivirus免费版,你无法修改此设置。你可以试着修复或删除该程序,如果你访问安全网站时遇到问题。
对企业版Bitdefender产品,请参考Bitdefender技术支持中心网页。
Bullguard
针对Bullguard安全产品,你可以禁止它对流行网站如Google,Yahoo和Facebook等的安全连接的拦截:
- 打开Bullguard面板。
- 点击高级视图。 并启用面板右上角的
- 点击 > 。
- 针对有错误提示信息的网站取消(不勾选) 。
ESET
针对ESET安全产品,你可以按照 ESET技术支持文章 打开和关闭 SSL/TLS协议过滤 或整体禁止它对安全连接的拦截。
Kaspersky
受到影响的Kaspersky用户应该将该安全产品升级到最新版,因为Kaspersky 2019及以上版已经带有对该问题的修正。Kaspersky 其下载页面包含了"升级"链接,它会将当前产品免费升级到最新版。
否则,你应该禁用安全连接:O
- 打开Kaspersky面板。
- 点击左下 。
- 点击 然后 .
- 在 不扫描加密连接 然后确认。< 勾选
- 最后,重启系统来使设置生效。
Windows账户的家庭安全设置
在微软Windows受家庭安全设置保护的账户下,对流行网站,如Google,Facebook和YouTube等的安全连接可能会受到拦截,其证书也会被替换为微软颁布的证书以进行搜索行为的过滤和记录。
请参阅 Microsoft FAQ page 来了解如何关闭账户的家庭设置。如果你想手动安装缺失的证书,可以参看 Microsoft技术支持文章。
来自企业网络的监控/过滤
一些企业级网络监控/过滤产品也会用替换证书的方式拦截加密连接,这可能会触发HTTPS网站报错。
如果你怀疑自己遇到此类情况,请联系你的IT部门以确保Firefox设置正确,并能够在此类环境下正常工作,比如必要的证书应该放到Firefox的信任列表中。你可以在Mozilla Wiki页面CA:AddRootToFirefox找到更多关于IT部门应该如何处理该业务的信息。
恶意软件
有些恶意软件对加密连接的拦截也会导致这个错误信息——参阅 针对 Firefox 恶意软件的故障排除 来了解如何处理恶意软件。
该错误码仅发生在某个特定网站
如果这个问题只发生在一个特定的网站上,那么原因通常是网络服务器设置不当。不过,当此问题网站是流行网站,如Google或Facebook,或是金融交易网站时,你应当参看 该错误码发生在多个安全网站。
证书由Symantec相关方发布
随着多个由Symantec根证书机构颁发的证书不合规问题的暴露,包括Mozilla在内的浏览器提供商正在逐渐把Symantec相关的产品移出可信证书范围。Firefox 不再信任由 Symantec 可信服务器发布的证书,包括由 GeoTrust、RapidSSL、Thawte 和 Verisign 等品牌发布的证书。更多信息,请参看 此 Mozilla 博客。
MOZILLA_PKIX_ERROR_ADDITIONAL_POLICY_CONSTRAINT_FAILED是表示此类错误的基本代码,不过对有些服务器,你可能会看到错误代码SEC_ERROR_UNKNOWN_ISSUER。无论如何,如果你访问的网站报了这样的错误,请通知其所有者此问题。
Mozilla 强烈建议这些网站运营方立即替换这些证书。更多信息,请参看 this DigiCert blog post and DigiCert Tools。
缺少中间证书
在网站缺少中间证书时,在错误页面上点击
会看到:服务器可能未发送合适的中间证书。
或许需要额外的根证书。
网站的证书可能不是由可信任的发布者颁发,并且也未提供完整的可信证书链(缺少中间证书)。
你可以把网站地址输入第三方工具,如 SSL Labs' test page,
来测试网站设置是否正常。如果结果是“证书链问题:不完整”,那么意味着中间证书缺失。
你应该向该网站的拥有者报告这个问题。
自签名证书
在网站使用自签名的证书时,点击错误页面上的
,你会看到错误代码ERROR_SELF_SIGNED_CERT和如下错误信息:缺省状态下,由未知机构颁发的自签名证书不被信任。自签名证书可以保证数据不被监听,但是却未告知数据的接收方是谁。对于不公开的内部网,这不是问题,此时你可以忽略该警告信息。
绕过该警告
如果网站允许,你可以添加例外以便能够在证书缺省不被信任的情况下访问该网站:
- 在警告页,点击 。
- 点击 。
Nginx反向代理报504超时错误
问题原因
nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。
通常有以下几种情况导致:
1.程序在处理大量数据,导致等待超时。
2.程序中调用外部请求,而外部请求响应超时。
3.连接数据库失败而没有停止,死循环重新连。
出现这种情况,我们可以先优化程序,缩短执行时间。另一方面,可以调大nginx超时限制的参数,使程序可以正常执行。
解决办法
在Nginx.conf配置文件中添加如下信息:
- 用于tomcat反向代理,解决nginx 504错误
proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k;
- 用于php反向代理,解决nginx 504错误
#以fastcgi_*配置项是php用的 fastcgi_connect_timeout 1000; fastcgi_send_timeout 1000; fastcgi_read_timeout 1000; fastcgi_buffer_size 64k; fastcgi_buffers 8 128k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_intercept_errors on;