Сегодня перестали работать все дополнения Firefox
Раздел(ы): FireFox, Программное обеспечение
Просмотры: 1937
Комментарии: 1
Сегодня 4 мая 2019 пришла беда от куда не ждали: перестали работать все дополнения FireFox. Попытка переустановить любое из них оканчивается неудачей.
Если зайти в меню дополнения (Ctrl+Shift+A) то можно увидеть примерно следующее предупреждение, что ваши расширения устаревшие, отключены и не поддерживаются:
Итог: сдохли все расширения.
А причина кроется в том, что все дополнения к Firefox отключены из-за истечения срока сертификата Mozilla. Кроме того, отмечается невозможность установки новых дополнений из официального каталога AMO (addons.mozilla.org).
Официального решения пока нет, но к счастью есть несколько временных «костылей», которые позволяют пользоваться браузером Firefox и его дополнениями как прежде.
Обязательная проверка дополнений Firefox по цифровым подписям была введена в апреле 2016 года. По мнению Mozilla проверка по цифровой подписи позволяет блокировать распространение вредоносных и шпионящих за пользователями дополнений.
Решение 1 — отключаем проверку цифровых сертификатов у дополнений браузера Firefox
Следующее решение я протестировал на FireFox 66.0.3 x64 для Windows.
Чтобы восстановить работу дополнений (расширений) FireFox найдите профиль FireFox на вашем компьютере, обычно он находится здесь:
Зайдите в папку профиля и создайте в ней каталог chrome.
В этом каталоге создайте три файла (disable-add-on-signing.js, userChrome.css, userChrome.xml) со следующем содержимым:
disable-add-on-signing.js
//This should be installed as the file disable-add-on-signing.js in // your profile's "chrome" directory. //Earlier versions of Firefox try { Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {}).eval("SIGNED_TYPES.clear()"); } catch(ex) {} try { Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {}).eval("SIGNED_TYPES.clear()"); } catch(ex) {} try { Components.utils.import("resource://gre/modules/addons/XPIDatabase.jsm", {}).eval("SIGNED_TYPES.clear()"); } catch(ex) {} //Tested on Firefox 66 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.');
userChrome.css
/*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
<?xml version="1.0"?> <!-- Copyright (c) 2017 Haggai Nuchi Available for use under the MIT License: https://opensource.org/licenses/MIT --> <!-- This has been slightly modified from the version available from https://github.com/nuchi/firefox-quantum-userchromejs/blob/master/userChrome.xml by Makyen. The 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[ function makeRelativePathURI(name) { let absolutePath = Components.stack.filename; return absolutePath.substring(0, absolutePath.lastIndexOf("/") + 1) + name; } // The following code executes in the browser context, // i.e. chrome://browser/content/browser.xul try { Services.scriptloader.loadSubScript(makeRelativePathURI("disable-add-on-signing.js"), window); } catch(e) { console.error(e); } ]]></constructor> </implementation> </binding> </bindings>
После того как вы добавили эти три файла в директорию chrome вам необходимо перезапустить браузер FireFox.
Затем зайдите в консоль браузера (Ctrl+Shift+J) и убедитесь, что проверка цифровых подписей отключена:
Это значит, что наш «костыль» работает.
Но к сожалению, заблокированные расширения автоматически не восстановят свою работу и вам нужно будет установить их вновь (https://addons.mozilla.org/ru/firefox/).
Внимание! Это временное решение пока в Mozilla не исправят ошибку. Так как цифровая подпись теперь не проверяется, то ставьте только проверенные расширения которыми вы пользовались ранее до сегодняшнего дня.
Решение 2 — скрипт реактивации расширений
В начале проверьте на странице about:config, что значение devtools.chrome.enabled находится в состоянии TRUE
Затем перейдите на служебную вкладку about:addons с неработающими расширениями, нажмите клавишу [F12] и вставьте следующий скрипт в консоль:
Скрипт реактивации заблокированный расширений FireFox:
// Re-enable *all* extensions async function set_addons_as_signed() { Components.utils.import("resource://gre/modules/addons/XPIDatabase.jsm"); Components.utils.import("resource://gre/modules/AddonManager.jsm"); let addons = await XPIDatabase.getAddonList(a => true); for (let addon of addons) { // The add-on might have vanished, we'll catch that on the next startup if (!addon._sourceBundle.exists()) continue; if( addon.signedState != AddonManager.SIGNEDSTATE_UNKNOWN ) continue; addon.signedState = AddonManager.SIGNEDSTATE_NOT_REQUIRED; AddonManagerPrivate.callAddonListeners("onPropertyChanged", addon.wrapper, ["signedState"]); await XPIDatabase.updateAddonDisabledState(addon); } XPIDatabase.saveChanges(); } set_addons_as_signed();
Не забудьте нажать [Enter].
Все заблокированные дополнения должны автоматически заработать без перезагрузки браузера. Правда выполнять эту процедуру вам скорее всего придется каждый день (каждые 24 часа, раз в сутки).
Проверено на Firefox 66.0.3 x64 для Windows.
Решение 3 — установка ночных и иных свежих сборок FireFox
Говорят, что в свежих сборках FireFox (не релизных) вышеописанную ошибку уже исправили и вы можете не дожидаясь официального выпуска скачать версию 66.0.4 release candidates.
Привожу ссылки на русские версии:
х32 — https://ftp.mozilla.org/pub/firefox/candidates/66.0.4-candidates/build3/win32/ru/
x64 — https://ftp.mozilla.org/pub/firefox/candidates/66.0.4-candidates/build3/win64/ru/
Я этот способ не проверял.
Выводы
Какое решение лучше использовать пока в Mozilla не выкатили новую версию браузера Firefox в котором все дополнения работают нормально?
Самое простое решение — это скачать и установить предрелизную версию, в ней расширения должны работать нормально.
Способ номер 2 хорош тем, что автоматически возвращает к жизни все ваши дополнения к браузеру Firefox. Но скорее всего вам придется запускать этот скрипт каждый день пока не выйдет официальное стабильное обновление браузера.
Способ номер 1 удаляет обязательную проверку сертификатов, что позволяет полноценно работать с дополнениями, но все расширения придется установить заново.
Думаю хорошим вариантом будет использовать варианты 2 и 1 вместе. Сначала вернуть к жизни все ранее установленные дополнения (вариант 2), а потом отключить проверку сертификатов (вариант 1). После чего можно спокойно ждать обновление Firefox с исправленным багом.
Благодарности
При написании статьи были использованы следующие источники:
- Firefox 54 сдохли все расширения
- Все дополнения к Firefox отключены из-за истечения срока сертификата Mozilla
- All extensions disabled due to expiration of intermediate signing cert
- How can I disable signature checking for Firefox add-ons?
- Opening the Browser Console
- Отвалились все дополнения, включая тему
огромное спасибо. Все расширения в работе