jon*_*sca 164 firefox firefox-extensions
几分钟前,我的所有 Firefox 扩展都自发地同时被禁用(转换为旧版状态)。
我怎样才能重新启用它们?
火狐 66.0.3(64 位)
Mak*_*yen 122
Mozilla 用于签署附加组件的中间签名证书已过期。这会导致 Firefox 认为使用该证书签名的附加组件不受信任。该问题正在Bugzilla 1548973和Mozilla 的博客中进行跟踪。
Mozilla 已发布适用于桌面和 Android 的 Firefox 66.0.5和60.6.3 ESR,“其中包括重新启用从 5 月 3 日起禁用的附加组件的永久修复程序。 ”建议您将 Firefox 更新到最新版本. 该更新取代了研究,这意味着如果您只启用“研究”来获得此修复,则您可以在更新到当前版本的 Firefox 后再次禁用它们。
对于不选择更新到当前版本的 Firefox 或 Firefox ESR 的任何人,Mozilla 计划发布适用于 Firefox 52 到 65 版本的更新。计划是它将成为用户可安装的扩展。期望他们会在有更多信息可用时更新他们的博客文章。这是截至美国东部时间 5 月 8 日 19:28 可用的所有信息。
要在 Windows 或 MacOS 上更新您的 Firefox 版本,请单击右上角的菜单,然后选择“帮助”,然后选择“关于 Firefox”。更新应该会自动下载,并会在您重新启动 Firefox 时应用。
并非所有 Linux 上的包管理器都发布了新版本。如果您的发行版的包管理器没有可用更新,那么您可能不得不求助于手动更新(使用您的首选方法)或尝试以下解决方案之一。
截至 2019-05-14,Mozilla 的博客列出了可以为不想更新的旧版 Firefox 用户安装的扩展(重点添加):
[注意:以下修复要求您启用“研究”,这允许 Mozilla 自动下载代码以在受影响的配置文件中在 Firefox 上运行(大多数用户只有一个配置文件)。此外,它还要求您启用“允许 Firefox 向 Mozilla 发送技术和交互数据”。如果您出于隐私考虑关闭了这些功能,则应考虑是否要这样做。您不必启用这些设置,但您确实需要启用它们以允许运行修复此问题的研究。对于那些不想启用“研究”和向 Mozilla 报告数据的人,请参阅解决方案 3(如下;解决方案 2 默认将数据发送给 Mozilla,有时还会发送给他们的合作伙伴)。不会打开向 Mozilla 报告,但我尚未对此进行测试。]
如果您启用了“研究”,则 Mozilla 为桌面用户在 Release、Beta 和 Nightly 上修复了该问题。来自Mozilla 的博客,由Kev Needham撰写,根据CC BY-SA 3.0许可:
修复将在接下来的几个小时内自动在后台应用。无需采取任何主动措施即可使附加组件再次工作。
请注意:此修复不适用于 Firefox ESR 或 Firefox for Android。我们正在努力为两者发布修复程序,并将在此处和社交媒体上提供更新。
为了在短时间内提供此修复,我们正在使用研究系统。该系统默认启用,除非已禁用研究,否则无需执行任何操作。Firefox 用户可以通过以下方式检查他们是否启用了研究:
- Firefox 选项/首选项 -> 隐私和安全 -> 允许 Firefox 安装和运行研究(向下滚动以查找设置)
- 重新启用附加组件后,可以再次禁用研究
将研究应用到 Firefox 最多可能需要六个小时。要检查是否已应用修复,您可以在地址栏中输入“about:studies”。如果修复处于活动状态,您将看到“hotfix-update-xpi-signing-intermediate-bug-1548973”,如下所示:
您还可能会看到列出的“hotfix-reset-xpi-verification-timestamp-1548973”,这是修复程序的一部分,可能位于“活动研究”或“已完成研究”部分。
Mozilla 正在开发不需要研究系统的修复程序。他们知道一些用户报告说,即使安装了上述两项研究,他们的扩展程序仍然处于禁用状态。该问题正在错误 1549078 中进行跟踪。
如果您启用了研究,Firefox 最多可能需要 6 小时才能检查这些新研究。
用户 David 在博客的评论中提出了以下建议,以便让 Firefox 更快地检查研究:
如果您在 中临时更改“
app.normandy.run_interval_seconds
”的值about:config
,重新启动,然后21600
在一切正常后将其改回(六小时),则六小时的等待可以降为秒。
我建议你不要把它设置在60
几秒以下,或者这样。可以肯定的是,距离 Firefox 上次检查研究已经超过 1 分钟,或者您已经安装了研究。使用像 60 这样的数字会给您足够的时间来安装研究并将数字设置回21600
,而无需 Firefox 持续检查研究。只需准备21600
在安装研究后将其改回,然后再次重新启动 Firefox。
我尝试从另一个配置文件复制研究/修补程序。手动将研究/修补程序文件添加到另一个配置文件不起作用。以这种方式加载时,它被识别为常规扩展名。但是,它似乎使用了WebExtension Experiments,在 Firefox 的发行版中没有为普通扩展启用它。
很可能可以修改配置文件目录中的配置文件以使其工作(它们主要是 JSON)。但是,我没有深入研究它以弄清楚需要什么。
看来您可以通过直接转到用于下载它的 URL 来直接安装主要的“研究”。我第一次看到的网址hotfix-update-xpi-intermediate@mozilla.com.xpi在此评论塞缪尔维渥瑞拉Mozilla的博客文章。
Machavity 对此问题有一个答案,描述了他从该 URL 下载研究的经验,并更详细地描述了可以在 Mozilla 的研究提要中找到该 URL 的位置。正是他的回答让我尝试直接下载它,因此如果您发现直接安装 URL 有帮助,则对他的回答进行投票是合适的。在那个答案中,它描述了虽然直接下载/安装研究 *.xpi 文件是有效的,但这样做不会导致修复程序显示在研究列表或附加组件列表中。如果 Firefox 稍后通过研究更新下载它,它就会显示为研究。
上述 URL 上的下载内容与通过普通“研究”提要安装后存储在扩展目录中的 hotfix-update-xpi-intermediate@mozilla.com.xpi 文件完全匹配。查看浏览器控制台表明直接从下载安装不会出现与从以前下载的副本手动安装 *.xpi 相同的问题(即它没有相同的问题,这使得通过替代 2 安装它非功能)。
如果您安装了Firefox Developer Edition或Firefox Nightly,about:config
您可以设置xpinstall.signatures.required
为false
. 这将禁用扩展签名测试。
Firefox Nightly 是 Firefox 开发前沿的每晚构建。仅当您愿意忍受可能存在的任何错误时才推荐使用。
Developer Edition 和 Nightly 都将“数据发送给 Mozilla——有时是我们 [Mozilla 的] 合作伙伴——以帮助我们 [Mozilla] 处理问题并尝试想法。了解共享的内容。”
Firefox 允许您在一台机器上同时安装多个版本的 Firefox。就个人而言,我安装了多个版本。一个相当简单的解决方案是安装 Developer Edition 并设置xpinstall.signatures.required
为false
. 然后您可以使用 Developer Edition 几天,直到 Mozilla 弄清楚并修复了整个问题。然后,您可以通过运行该版本返回到使用 Firefox 的 Release 版本。
设置xpinstall.signatures.required
到false
会不会在Firefox在Mac或Windows的测试版或发布版本。这样做没有任何效果。在 Linux 上,根据您的发行版,该设置可能会受到尊重,并且适用于 Firefox 发行版的某些发行版。
首选的解决方案是使用上面提到的“研究”。但是,如果这对您不起作用,您可以通过禁用签名检查来解决此问题。
签名检查是一项安全功能。禁用它会降低 Firefox 的安全性。一旦 Mozilla解决了他们的证书问题,建议您删除此代码以重新启用签名检查。安装此代码以禁用签名检查后,您应该小心仅安装您完全信任的扩展(例如,托管在Mozilla Add-ons上的扩展)。
注意:此答案的其余部分最初是从我对如何禁用 Firefox 附加组件的签名检查的答案中复制的?在 Stack Overflow 上,但它被修改了一点。
以下说明将禁用 Firefox 上安装文件的 Firefox 配置文件的签名检查。您将在 Firefox Profile 目录下的chrome目录中添加一些文件。
我已经在 Firefox 66.0.3+ 上测试过了。
从 Firefox 69+ 开始,除了下面的说明外,预计您还需要toolkit.legacyUserProfileCustomizations.stylesheets
设置为true
in about:config
。如果它不存在,那么您将需要创建它(右键单击上下文菜单中的“新建”)作为布尔选项。有关添加此选项的更多详细信息,请参阅Bugzilla 1541233。
IIRC,Firefox 65 需要一些稍微不同的代码。我相信我在为 Firefox 66 修改它时将该代码留在try
/catch
块中,但我不确定这一点。
如果您已javascript.enabled
设置为false
in ,这将不起作用about:config
。该配置选项的默认值是true
,因此除非您明确禁用它,否则它应该没问题。
我们将使用一种技术,它允许您从存储在 Firefox 配置文件目录中的文件在浏览器上下文中运行任意 JavaScript 代码。我从Haggai Nuchi 的 GitHub 存储库中找到了如何做到这一点:Firefox Quantum compatible userChrome.js。此代码在 Firefox 启动时运行一次,然后在每次打开新窗口时再次运行。
在 Windows 上,您的 Firefox 配置文件目录将为%appdata%\Mozilla\Firefox\Profiles\[profileID]
. 如果您只有一个配置文件,则[profileID]
该目录将是该目录中的唯一%appdata%\Mozilla\Firefox\Profiles
目录。如果您有多个配置文件,则需要选择要安装此 hack 的配置文件。
进入您的配置文件目录后,您将需要创建一个名为 的目录(chrome
如果该目录尚不存在)。您将以下 2 个文件添加到该目录中:
userChrome.css
userChrome.xml
然后,您将需要 中的以下代码userChrome.css
,该代码可从 Haggai Nuchi 的 GitHub 存储库获得:
Run Code Online (Sandbox Code Playgroud)/*Enable userChrome.js */ /* Copyright (c) 2017 Haggai Nuchi Available for use under the MIT License: https://opensource.org/licenses/MIT */ @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); toolbarbutton#alltabs-button { -moz-binding: url("userChrome.xml#js"); }
您将需要userChrome.xml
(从Haggai Nuchi 的 GitHub 存储库中可用的版本稍作修改):
<?xml version="1.0"?>
<!-- Copyright (c) 2017 Haggai Nuchi
Available for use under the MIT License:
https://opensource.org/licenses/MIT
-->
<!-- This has been modified from the version available from
https://github.com/nuchi/firefox-quantum-userchromejs/blob/master/userChrome.xml
to include code by Makyen to disable add-on signing. If you want to load an additional JavaScript
file of your own, please see the original file by Haggai Nuchi.
This modified version is released under both the MIT and CC BY-SA 3.0 licenses.
-->
<bindings id="generalBindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="js" extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-badged">
<implementation>
<constructor><![CDATA[
//Worked on FF65 and lower. The 3 different resources are used in different versions of FF.
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {}).eval("SIGNED_TYPES.clear()");
} catch(e) {}
try {
Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {}).eval("SIGNED_TYPES.clear()");
} catch(e) {}
try {
Components.utils.import("resource://gre/modules/addons/XPIDatabase.jsm", {}).eval("SIGNED_TYPES.clear()");
} catch(e) {}
//Tested on Firefox 66
try {
const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetters(this, {
XPIDatabase: "resource://gre/modules/addons/XPIDatabase.jsm",
});
XPIDatabase.SIGNED_TYPES.clear();
console.log('Add-on signing disabled.');
} catch(e) {
console.error(e);
}
]]></constructor>
</implementation>
</binding>
</bindings>
Run Code Online (Sandbox Code Playgroud)
在配置文件的chrome目录中添加这两个文件后,您需要重新启动 Firefox。您可以通过查找“附加签名已禁用”来验证代码是否正在运行。在浏览器控制台中(在 FF66+ 中;控制台输出可能不会在早期版本的 Firefox 中显示)。
被 Firefox 禁用或删除的附加组件可能不会自动启用。您可能需要重新安装它们,或者至少从about:addons
. 您可以通过将 *.xpi 文件拖放到 Firefox 窗口并确认您要安装来安装它们,或者转到Mozilla Add-ons上的附加组件页面。
如果您想从Mozilla 附加组件获取任何特定扩展名的 *.xpi 文件,您可以通过右键单击“安装”按钮并选择“另存为”或“删除”来下载它。
如果您在使用 FF<57 时遇到问题,请参阅我对“如何禁用 Firefox 附加组件的签名检查?”的回答。在堆栈溢出上。我相信我已经整合了对该问题的评论中的所有内容,但这些评论描述了其他人遇到的一些问题。
不幸的是,我不记得这个方法在哪个版本的 Firefox 中停止工作了。我知道我在 Firefox 54、55、52ESR 和 FF56.* 上使用它。
我最初在这篇博文中找到了禁用强制附加签名检查的解决方案,这是此答案中(稍作修改)代码的原始来源。进行这些更改将允许您使用您修改的 Firefox 发行版将未签名的附加组件安装到配置文件中。对于大多数人来说,这将是您的主要 Firefox 安装。但是,如果您安装了多个版本,则需要在每次安装时进行此修改。但是,一旦您进行修改,它们将通过正常的 Firefox 更新保留。
您需要在 Firefox 安装目录中添加几个文件。您可以在 mozillaZine 上找到 Windows、Linux 和 Mac OS 的安装目录示例列表。最常见的安装目录是:
然后,您需要添加以下代码作为文件<Install directory>/defaults/pref/disable-add-on-signing-prefs.js
(Windows:) <Install directory>\defaults\pref\disable-add-on-signing-prefs.js
:
//This file should be placed in the defaults/pref directory (folder)
//within the Firefox installation directory with the with the name:
// disable-add-on-signing-prefs.js
pref("general.config.obscure_value", 0);
pref("general.config.filename", "disable-add-on-signing.js");
Run Code Online (Sandbox Code Playgroud)
您还需要添加以下代码作为文件<Install directory>/disable-add-on-signing.js
(Windows:) <Install directory>\disable-add-on-signing.js
:1
//This file should be placed in the Firefox installation directory
//(folder) with the with the name:
// disable-add-on-signing.js
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
} catch(e) {}
try {
Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {})
.eval("SIGNED_TYPES.clear()");
} catch(e) {}
Run Code Online (Sandbox Code Playgroud)
使用当前版本的 Firefox,我已经使用此解决方案一段时间了,以便安装一些我为自己使用而构建的扩展,并测试我正在开发的新版本的扩展(当我想在该发行版,而不是Firefox的开发版或夜间)。
注意:在about:addons
Firefox 中可能会显示(在某些情况下)加载项已启用(未变灰),但有文字说明加载项“无法验证并已被禁用”。文字不准确!附加组件已启用并正常运行。
[这是对旧代码的解释,但当前代码非常相似。]
在resource://gre/modules/addons/XPIProvider.jsm
将const SIGNED_TYPES
被定义为一个Set
。为了使附加组件需要签名,其类型必须是 that 的成员Set
。该Set.prototype.clear()
方法用于清除Set
. 这导致没有需要签名的附加类型(代码 1,代码 2)。
如果你愿意,你可以单独为任何类型的禁用签名检查"webextension"
,"extension"
,"experiment"
,或"apiextension"
。
Sha*_*awn 55
中间代码签名证书已过期。这意味着所有使用该证书签名的附加组件都不再受信任。在这种情况下,浏览器正在做它的工作。
Mozilla 将需要放弃附加组件和/或推出新证书。正在进行修复工作。目前没有解决方案,除非您在开发人员代码分支上,您可以进入about:config
并设置xpinstall.signatures.required
为false
.
这对大多数用户不起作用,如果您不将其设置回原处,可能会给您带来一些安全风险。最好的选择是等待。我想他们会在几个小时内解决这个问题。
https://bugzilla.mozilla.org/show_bug.cgi?id=1548973
Uli*_*sys 12
此问题是由于附加证书大量过期造成的。正如其他人所提到的,修复程序正在进行中。
要临时重新启用附加组件,您可以导航至about:config
并设置
xpinstall.signatures.required
为 false。
这将重新启用已安装的任何具有过期证书的附加组件,但不建议长期保持启用状态。我建议在问题解决后立即关闭它。
我找到了另一种获取修补程序的方法。它与上面的修复程序相同,但修改尝试下载研究的设置未能在我的机器上获取它。我发现了一个 GitHub 问题,它描述了另一种安装修补程序的方法
这样做后,我的插件立即再次开始工作。我不知道你是否必须先启用研究(我启用了我的)。我也不会在扩展或研究窗口中显示它,所以请注意您可能无法禁用它(可能直到研究自行更新)。
更新:我的浏览器终于拉取了研究提要,修补程序显示在about:studies
(将它放在您的 URL 栏中以查看所有研究),您确实可以在其中删除它。所以这一切都是为了更快地修复 Firefox,但一定要按照 Makyen 的回答中概述的那样进行研究
归档时间: |
|
查看次数: |
34391 次 |
最近记录: |