解决并分析 Firefox 浏览器近期(2019年5月4日)发生的插件被异常禁用的问题

操作环境

操作系统:Windows 10 中文家庭版 64 位
Firefox 版本:66.0.3 (64-bit) 英文国际版

问题说明

2019年5月4日,我发现我的 Firefox 浏览器显示插件的位置一个插件都没有了,如图 1:

图 1

之后,打开 Firefox 的扩展页面 about:addons, 看到所有扩展都有了如下报错并被禁用,如图 2:

图 2

报错的文本内容如下:

XXX could not be verified for use in Firefox and has been disabled.

随后,我在“火狐社区(mozilla.com.cn)”中找到了对这个问题的说明和解决方案:

http://mozilla.com.cn/thread-413298-1-1.html

火狐社区对该问题的解释是:

由于 AMO(Firefox 扩展中心)中间签名证书过期,导致 Firefox 认为这些扩展是未签名的,所以会被禁用。

http://mozilla.com.cn/thread-413298-1-1.html

解决过程

依次打开火狐的”Options / Privacy & Security / Firefox Data Collection and Use”, 地址:

about:preferences#privacy

勾选”Allow Firefox to install and run studies”.
之后,点击该选项后面的”View Firefox studies”可以查看 Firefox 曾经安装和正在安装的一些实验项目(地址:about:studies.), 如图 3:

图 3

我的 about:studies 页面如图 4,但是,可以看到,在我进行了上面的操作之后,并没有和本次事件有关的实验项目的安装记录:

图 4

不过,在火狐社区该帖子(http://mozilla.com.cn/thread-413298-1-1.html)的下面的附件中给出了修复问题的扩展文件,可以手动下载之后拖到 Firefox 浏览器中安装,安装完成之后就恢复正常了,所有插件都可以正常使用了,如图 5 和 图 6:

图 5
图 6

问题分析

下载下来的扩展文件是后缀为 .xpi 的文件,全名如下:

hotfix-update-xpi-intermediate@mozilla.com-1.0.2-signed.xpi

使用 7-ZIP 对该文件解压后得到如下文件与文件夹(如图 7 所示):

图 7

META-INF 文件夹中包含如下三个文件:

  • manifest.mf
  • mozilla.rsa
  • mozilla.sf

其中 mozilla.rsa 应该是和 Firefox 扩展中心的中间签名有关的文件了。在火狐社区中,Mozilla 员工 (ID: xuyuehang) 发表的回复中说明了 hotfix-update-xpi-intermediate@mozilla.com-1.0.2-signed.xpi 这个插件解决该问题的方式:

大约2小时前我们推送了部分修复:使用相同的名称/密钥生成了一个新的中间证书,但更新了有效时限,通过Firefox内置的热更新推送给用户,应该大多数用户会在未来几小时内看到扩展已恢复,已经有部分用户收到了更新

http://mozilla.com.cn/thread-413298-1-1.html

根据来自网络上的消息,自从 2016 年夏天的 FF48 后,正式版和 beta 版的 Firefox 安装的插件必须被 AMO 签名,Nightly 版和 Developer Edition 版可以加载未签名的插件,而这次问题发生的直接原因是 AMO 证书过期导致的。根据我查找到的资料,”AMO” 的全称应该是”Addons Mozilla Org”, 其网址为”https://addons.mozilla.org”.
MozillaWiki 上关于”AMO”的词条:https://wiki.mozilla.org/AMO
Firefox 官方对插件签名的说明:https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/Distribution
Firefox 官方对扩展和插件签名的说明:https://wiki.mozilla.org/Add-ons/Extension_Signing