Сегодня перестали работать все дополнения Firefox

Опубликовано: 4 мая 2019 / Обновлено: 5 мая 2019
Раздел(ы): FireFox, Программное обеспечение
Просмотры: 1850
Комментарии: 1

Сегодня 4 мая 2019 пришла беда от куда не ждали: перестали работать все дополнения FireFox. Попытка переустановить любое из них оканчивается неудачей.

Если зайти в меню дополнения (Ctrl+Shift+A) то можно увидеть примерно следующее предупреждение, что ваши расширения устаревшие, отключены и не поддерживаются:

Сегодня перестали работать все дополнения Firefox

Итог: сдохли все расширения.

А причина кроется в том, что все дополнения к Firefox отключены из-за истечения срока сертификата Mozilla. Кроме того, отмечается невозможность установки новых дополнений из официального каталога AMO (addons.mozilla.org).

Официального решения пока нет, но к счастью есть несколько временных «костылей», которые позволяют пользоваться браузером Firefox и его дополнениями как прежде.

Обязательная проверка дополнений Firefox по цифровым подписям была введена в апреле 2016 года. По мнению Mozilla проверка по цифровой подписи позволяет блокировать распространение вредоносных и шпионящих за пользователями дополнений.

Решение 1 — отключаем проверку цифровых сертификатов у дополнений браузера Firefox

Следующее решение я протестировал на FireFox 66.0.3 x64 для Windows.

Чтобы восстановить работу дополнений (расширений) FireFox найдите профиль FireFox на вашем компьютере, обычно он находится здесь:

%appdata%\Mozilla\Firefox\Profiles\[profileID]

Зайдите в папку профиля и создайте в ней каталог chrome.

В этом каталоге создайте три файла (disable-add-on-signing.js, userChrome.css, userChrome.xml) со следующем содержимым:

Сегодня перестали работать все дополнения Firefox

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) и убедитесь, что проверка цифровых подписей отключена:

Сегодня перестали работать все дополнения Firefox

Это значит, что наш «костыль» работает.

Но к сожалению, заблокированные расширения автоматически не восстановят свою работу и вам нужно будет установить их вновь (https://addons.mozilla.org/ru/firefox/).

Внимание! Это временное решение пока в Mozilla не исправят ошибку. Так как цифровая подпись теперь не проверяется, то ставьте только проверенные расширения которыми вы пользовались ранее до сегодняшнего дня.

Решение 2 — скрипт реактивации расширений

В начале проверьте на странице about:config, что значение devtools.chrome.enabled находится в состоянии TRUE

Сегодня перестали работать все дополнения Firefox

Затем перейдите на служебную вкладку about:addons с неработающими расширениями, нажмите клавишу [F12] и вставьте следующий скрипт в консоль:

Сегодня перестали работать все дополнения Firefox

Скрипт реактивации заблокированный расширений 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 с исправленным багом.

Благодарности

При написании статьи были использованы следующие источники:

  1. Firefox 54 сдохли все расширения
  2. Все дополнения к Firefox отключены из-за истечения срока сертификата Mozilla
  3. All extensions disabled due to expiration of intermediate signing cert
  4. How can I disable signature checking for Firefox add-ons?
  5. Opening the Browser Console
  6. Отвалились все дополнения, включая тему

Обсуждение (комментарии к статье)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных", на условиях и для целей определенных политикой конфиденциальности сайта.
© Юрий Рассадников, 2011 - 2024
uptime узнать
Домен : reg.ru
Хостинг : adman.com
SQL - 8 | 0,162 сек. | 8.39 МБ