Установка непроверенных дополнений в firefox. Как отключить проверку подписи для надстроек Firefox? Чтобы отключить запрещение firefox на установку расширений —

Доступ

6 ответов

Отключите проверку подписи надстроек в релизных (всех) версиях Firefox

Версия Firefox 65+ (или около того)

Следующие инструкции отключат проверку подписи в Firefox для профиля Firefox, в который вы устанавливаете файлы. Вы собираетесь добавить некоторые файлы в каталог chrome в каталоге вашего профиля Firefox.

Я проверял это на Firefox 66.0. 3+.

IIRC, для Firefox 65 требовался немного другой код, я думаю, что оставил этот код в disable-add-on-signature.js, когда модифицировал его для Firefox 66, но я не уверен в этом.

Мы собираемся использовать технику, которая позволяет вам запускать произвольный код JavaScript в контексте браузера из файлов, хранящихся в каталоге вашего профиля Firefox. Я нашел, как это сделать из репозитория Haggai Nuchi GitHub: Firefox Quantum совместимый userChrome.js .

В Windows каталог вашего профиля Firefox будет %appdata%\Mozilla\Firefox\Profiles\ . Если у вас есть только один профиль, будет единственным каталогом в каталоге %appdata%\Mozilla\Firefox\Profiles . Если у вас есть несколько профилей, вам нужно выбрать те, в которые вы хотите установить этот хак.

Как только вы попадете в каталог своего профиля, вам нужно будет создать каталог с именем chrome , если он еще не существует. Вы будете добавлять 3 файла ниже в этот каталог:

  • userChrome.css
  • userChrome.xml
  • disable-add-on-signing.js

Затем вам понадобится следующий код в userChrome.css , который доступен из репозитория Haggai Nuchi GitHub:

/*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):

Вам также понадобится disable-add-on-signing.js:

//This should be installed as the file disable-add-on-signing.js in // your profile "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.");

После добавления этих файлов в каталог Chrome вашего профиля вам нужно будет перезапустить Firefox. Вы можете убедиться, что код запущен, выполнив поиск "подпись надстройки отключена". в консоли браузера .

Надстройки, которые были отключены или удалены Firefox, не будут автоматически включены. Вам нужно будет переустановить их. Вы можете установить их, перетащив файл *.xpi в окно Firefox и подтвердив, что вы хотите установить.

Если вы хотите получить файл *.xpi для какого-либо конкретного расширения из дополнений Mozilla, вы можете скачать его, щелкнув правой кнопкой мыши кнопку "Установить" и выбрав "Сохранить как" или "Удалить".

Firefox версии 57 или более ранней (или около того)

К сожалению, я не помню, с какой версией Firefox этот метод перестал работать. Я знаю, что использовал его на Firefox 54, 55, 52ESR и FF56. *.

Первоначально я нашел это решение для отключения принудительной проверки подписи надстройки в этом посте , который является исходным кодом (несколько измененного) кода в этом ответе. Внесение этих изменений позволит вам устанавливать неподписанные надстройки в профили, используя измененный вами дистрибутив Firefox. Для большинства людей это будет ваша основная установка Firefox. Однако, если вы установили несколько версий, вам нужно будет вносить эти изменения в каждую установку. Однако после внесения изменений они останутся через обычные обновления Firefox.

Вам нужно будет добавить пару файлов в каталог установки Firefox. Вы можете найти список примеров установочных каталогов для Windows, Linux и Mac OS на mozillaZine . Наиболее распространенные каталоги установки:

  • Windows
    • C:\Program Files\Mozilla Firefox\
    • C:\Program Files (x86)\Mozilla Firefox\
  • Linux
    • /USR/Lib/firefox- <версия>
  • OSX
    • /Applications/Firefox.app

Добавить первый файл

Затем вам нужно добавить приведенный ниже код в виде файла /defaults/pref/disable-add-on-signing-prefs.js (Windows: \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");

Добавить второй файл

Вам также необходимо добавить приведенный ниже код в виде файла /disable-add-on-signing.js (Windows: \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(ex) {} try { Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {}) .eval("SIGNED_TYPES.clear()"); } catch(ex) {}

Результаты

Я использую эти решения уже много лет, чтобы установить несколько расширений, которые я создал для своего собственного использования, и для тестирования новых версий расширений, над которыми я работаю (когда я хочу протестировать в продакшен версии вместо Firefox Developer Edition или Ночной).

ПРИМЕЧАНИЕ. В about:addons Firefox может показывать (при некоторых условиях) надстройку как включенную (не выделенную серым цветом), но с текстом, указывающим, что надстройка "не может быть проверена и была отключена". Текст не точный! Надстройка включена и работает.

Как это устроено

Если вы хотите, вы можете отдельно отключить проверку подписи для любого из типов: "webextension" , "extension" , "experiment" или "apiextension" .

Удалите каталог META-INF из любого модифицированного расширения

Дополнительные файлы в разделах выше отключают требование, чтобы расширения были подписаны. Если файлы подписи существуют, подпись все равно будет проверена. Таким образом, если вы изменили расширение, которое было подписано, и не удалили файлы подписи, расширение не пройдет проверку подписи. Другими словами, фактически проверка любых существующих подписей является отдельным шагом от требования, что подпись должна существовать.

Если вы изменили расширение, которое было подписано (вы можете сказать, что оно было подписано существованием каталога META-INF в корневом каталоге расширения), вам потребуется удалить файлы сигнатур. Вы можете сделать это, удалив каталог META-INF и все файлы, содержащиеся в этом каталоге.

1. Код в блоге помещает этот вызов в блок try{}catch(){} . Там действительно нет необходимости делать это. Единственная эффективная вещь, которая делает это, - предотвращает сообщение об ошибке в консоли браузера (Ctrl - Shift - J или Cmd - Shift - J в OSX). Там нет никакого дополнительного кода, который желательно запустить в случае сбоя. Кроме того, я предпочел бы иметь возможность видеть ошибку в консоли браузера, если это не удается, чтобы знать, что на самом деле произошел сбой. Отсутствие try{}catch(){} не имеет никаких негативных последствий и позволяет отследить проблему, если в какой-то будущей версии Firefox дополнения начнут отключаться из-за отсутствия подписи.

Чтобы завершить ответ, приведенный выше, я обнаружил firefox-autoconfig , который состоит из установки файла autoconfig.js в /default/prefs и файла ci.clg в который является способом отключения xpinstall.signatures.required (и другие опции тоже) окончательно и автоматически при открытии Firefox (протестировано с Firefox 45.0.1)

Вы увидите это содержимое в autoconfig.js :

// pref("general.config.filename", "ci.cfg"); pref("general.config.obscure_value", 0);

И это содержимое в ci.cfg :

// Disable checking if firefox is default browser lockPref("browser.shell.checkDefaultBrowser", false); // Disable restoring session lockPref("browser.sessionstore.resume_from_crash", false); // Disable extension signature check lockPref("xpinstall.signatures.required", false); // Allow extensions to be installed without user prompt pref("extensions.autoDisableScopes", 0); pref("extensions.enabledScopes", 15); // Disable updater lockPref("app.update.enabled", false); // make absolutely sure it is really off lockPref("app.update.auto", false); lockPref("app.update.mode", 0); lockPref("app.update.service.enabled", false); // Prevent closing dialogs lockPref("browser.showQuitWarning", false); lockPref("browser.warnOnQuit", false); lockPref("browser.tabs.warnOnClose", false); lockPref("browser.tabs.warnOnCloseOtherTabs", false); // Disable Add-ons compatibility checking clearPref("extensions.lastAppVersion"); // Don"t show "know your rights" on first run pref("browser.rights.3.shown", true); //Disable plugin checking lockPref("plugins.hide_infobar_for_outdated_plugin", true); clearPref("plugins.update.url"); // Disable health reporter lockPref("datareporting.healthreport.service.enabled", false); // Disable all data upload (Telemetry and FHR) lockPref("datareporting.policy.dataSubmissionEnabled", false); // Disable crash reporter lockPref("toolkit.crashreporter.enabled", false); Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false; // Browser Console command line pref("devtools.chrome.enabled", true);

В свете последних событий связанных с релизом Mozilla Firefox 48, который навёл шухеру среди части пользователей, в связи с обязательным наличием подписи у расширений, люди столкнувшиеся с этой проблемой встали перед выбором, либо:

  1. не пользоваться неподписанными расширениями (плохой вариант);
  2. использовать небрэндированные сборки;
  3. идти окольными путями, пытаясь отключить проверки любыми способами, некоторые из которых предложены в следующих комментариях:
    https://geektimes.ru/post/279132/#comment_9480372
    https://geektimes.ru/post/279132/#comment_9480382
  4. подписать необходимое расширение самостоятельно.
Как вы уже догадались, здесь пойдёт речь о последнем способе. Если мы не планируем распространять расширения через официальный каталог, то подпись мы можем получить без ручных проверок, т.е. легко и просто.

Для этого нам понадобятся:
  1. учётная запись на addons.mozilla.org
  2. установленный nodejs версии >= 0.10
  3. npm версии >=3.0.0 (npm up npm)
  4. jpm для nodejs (npm install jpm).
Будем рассматривать процесс подписания на примере расширения «Random Agent Spoofer». Данное расширение содержит список юзер-агентов, которые довольно быстро устаревают, а обновляется дополнение не часто. В свою очередь, в официальном репозитории файлы с нужными нам данными обновляются регулярно и возникает закономерное желание пустить их в дело.

Итак, учётную запись зарегистрировали, программное окружение установлено, можно приступать.

Берём подопытное расширение и распаковываем его в отдельную папку, в нашем случае используем слепок репозитория, расположенного по адресу https://github.com/dillbyrne/random-agent-spoofer .
Получим следующую структуру каталогов:
test\
lib\
doc\
data\
.gitignore
LICENSE
package.json
README.md

Если используется готовое собранное расширение, то в корне папки где оно распаковано, необходимо удалить файлы «bootstrap.js» и
«install.rdf», они создаются программой сборки, а при модификации уже подписанных дополнений ещё и папку «META-INF». Т.к. мы имеем дело с ещё не собранным дополнением, то это не требуется. Следующим шагом будет редактирование файла «package.json», расположенного опять же в корне каталога распакованного расширения. В нашем случае его начало выглядит так:
{
"name": "random-agent-spoofer",
"title": "Random Agent Spoofer",
"id": "jid1-AVgCeF1zoVzMjA@jetpack",
"description": "Allows the use of various browser profiles (including useragent ,platform, oscpu, accept headers and other options), which it can randomly switch between after a chosen period of time has expired",
"author": "dbyrne",
...
}

Если в нём содержится параметр «id» его надо либо изменить, либо удалить. В противном случае, мы получим ошибку при попытке подписи о том, что не являемся его владельцем.
Далее командуем следующее «заклинание» для сборки расширения в архив:

Jpm xpi --addon-dir <путь к папке куда распаковали>

Или просто:

Jpm xpi , если текущий каталог это и есть корень распакованного расширения.

На выходе должен появиться файл собранного расширения.xpi, который и будем подписывать.

А теперь приготовим свой api-ключ, ради получения которого и регистрировались на addons.mozilla.org . Его можно увидеть по адресу addons.mozilla.org/ru/developers/addon/api/key в таком виде:

Издатель JWT: Секрет JWT:

Где Ваш персональный ключ. И в заключение, собственно, сам акт подписания осуществляем скомандовав:

Jpm sign --api-key --api-secret --xpi <путь к расширению полученному на предыдущем шаге>

Если всё пройдёт без ошибок и автоматическая проверка будет пройдена, то в текущем каталоге мы получим подписанное расширение, в котором и нуждались.

Полезные ссылки:
Документация по jpm: developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm
Signing Api: olympia.readthedocs.io/en/latest/topics/api/signing.html

Всем спасибо за внимание, удачи!

В свете последних событий связанных с релизом Mozilla Firefox 48, который навёл шухеру среди части пользователей, в связи с обязательным наличием подписи у расширений, люди столкнувшиеся с этой проблемой встали перед выбором, либо:

  1. не пользоваться неподписанными расширениями (плохой вариант);
  2. использовать небрэндированные сборки;
  3. идти окольными путями, пытаясь отключить проверки любыми способами, некоторые из которых предложены в следующих комментариях:
  4. подписать необходимое расширение самостоятельно.
Как вы уже догадались, здесь пойдёт речь о последнем способе. Если мы не планируем распространять расширения через официальный каталог, то подпись мы можем получить без ручных проверок, т.е. легко и просто.

Для этого нам понадобятся:
  1. учётная запись на addons.mozilla.org
  2. установленный nodejs версии >= 0.10
  3. npm версии >=3.0.0 (npm up npm)
  4. jpm для nodejs (npm install jpm).
Будем рассматривать процесс подписания на примере расширения «Random Agent Spoofer». Данное расширение содержит список юзер-агентов, которые довольно быстро устаревают, а обновляется дополнение не часто. В свою очередь, в официальном репозитории файлы с нужными нам данными обновляются регулярно и возникает закономерное желание пустить их в дело.

Итак, учётную запись зарегистрировали, программное окружение установлено, можно приступать.

Берём подопытное расширение и распаковываем его в отдельную папку, в нашем случае используем слепок репозитория, расположенного по адресу https://github.com/dillbyrne/random-agent-spoofer .
Получим следующую структуру каталогов:
test\
lib\
doc\
data\
.gitignore
LICENSE
package.json
README.md

Если используется готовое собранное расширение, то в корне папки где оно распаковано, необходимо удалить файлы «bootstrap.js» и
«install.rdf», они создаются программой сборки, а при модификации уже подписанных дополнений ещё и папку «META-INF». Т.к. мы имеем дело с ещё не собранным дополнением, то это не требуется. Следующим шагом будет редактирование файла «package.json», расположенного опять же в корне каталога распакованного расширения. В нашем случае его начало выглядит так:
{
"name": "random-agent-spoofer",
"title": "Random Agent Spoofer",
"id": "jid1-AVgCeF1zoVzMjA@jetpack",
"description": "Allows the use of various browser profiles (including useragent ,platform, oscpu, accept headers and other options), which it can randomly switch between after a chosen period of time has expired",
"author": "dbyrne",
...
}

Если в нём содержится параметр «id» его надо либо изменить, либо удалить. В противном случае, мы получим ошибку при попытке подписи о том, что не являемся его владельцем.
Далее командуем следующее «заклинание» для сборки расширения в архив:

Jpm xpi --addon-dir <путь к папке куда распаковали>

Или просто:

Jpm xpi , если текущий каталог это и есть корень распакованного расширения.

На выходе должен появиться файл собранного расширения.xpi, который и будем подписывать.

А теперь приготовим свой api-ключ, ради получения которого и регистрировались на addons.mozilla.org . Его можно увидеть по адресу addons.mozilla.org/ru/developers/addon/api/key в таком виде:

Издатель JWT: Секрет JWT:

Где Ваш персональный ключ. И в заключение, собственно, сам акт подписания осуществляем скомандовав:

Jpm sign --api-key --api-secret --xpi <путь к расширению полученному на предыдущем шаге>

Если всё пройдёт без ошибок и автоматическая проверка будет пройдена, то в текущем каталоге мы получим подписанное расширение, в котором и нуждались.

Полезные ссылки:
Документация по jpm: developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm
Signing Api: olympia.readthedocs.io/en/latest/topics/api/signing.html

Всем спасибо за внимание, удачи!

Проблема: при установке панели (тулбара, toolbar) от Google для Firefox 3.5.x выскакивает вот такая ошибка:

Firefox could not install the file at «http://dl.google.com/firefox/google-toolbar-win.xpi»

Давайте рассмотрим 2 решения данной проблемы:

1 решение:

Определение сертификата

Первое что вы должны сделать, это определить сертификат для данного файла.xpi.

Скачайте расширение.Разархивируйте это расширение.Найдите файл./META-INF/zigbert.rsa.Найдите в нем строку типа: .Class 3 Public Primary Certification AuthorityТеперь мы знаем, что.xpi файл подписан VeriSign.

Установление доверия сертификату

Запустите Firefox.Настройки -> Дополнительно -> ШифрованиеПросмотр сертификатов -> Центры сертификацииНайдите VeriSign сертификат.

Нажмите на кнопку Изменить…

Поставьте галку, как на рисунке и перезапустите браузер.

2 решение:

Настройки -> Дополнительно -> ШифрованиеКнопка Настройки OCPS (Online Certificate Status Protocol).отметьте галкой, см. рисунок.Перезапустите Firefox.

Аналогично для плагинов, тем и т.д.



В свете последних событий связанных с релизом Mozilla Firefox 48, который навёл шухеру среди части пользователей, в связи с обязательным наличием подписи у расширений, люди столкнувшиеся с этой проблемой встали перед выбором, либо:

  1. не пользоваться неподписанными расширениями (плохой вариант);
  2. использовать небрэндированные сборки;
  3. идти окольными путями, пытаясь отключить проверки любыми способами, некоторые из которых предложены в следующих комментариях:
    https://geektimes.ru/post/279132/#comment_9480372
    https://geektimes.ru/post/279132/#comment_9480382
  4. подписать необходимое расширение самостоятельно.
Как вы уже догадались, здесь пойдёт речь о последнем способе. Если мы не планируем распространять расширения через официальный каталог, то подпись мы можем получить без ручных проверок, т.е. легко и просто.

Для этого нам понадобятся:
  1. учётная запись на addons.mozilla.org
  2. установленный nodejs версии >= 0.10
  3. npm версии >=3.0.0 (npm up npm)
  4. jpm для nodejs (npm install jpm).
Будем рассматривать процесс подписания на примере расширения «Random Agent Spoofer». Данное расширение содержит список юзер-агентов, которые довольно быстро устаревают, а обновляется дополнение не часто. В свою очередь, в официальном репозитории файлы с нужными нам данными обновляются регулярно и возникает закономерное желание пустить их в дело.

Итак, учётную запись зарегистрировали, программное окружение установлено, можно приступать.

Берём подопытное расширение и распаковываем его в отдельную папку, в нашем случае используем слепок репозитория, расположенного по адресу https://github.com/dillbyrne/random-agent-spoofer .
Получим следующую структуру каталогов:
test\
lib\
doc\
data\
.gitignore
LICENSE
package.json
README.md

Если используется готовое собранное расширение, то в корне папки где оно распаковано, необходимо удалить файлы «bootstrap.js» и
«install.rdf», они создаются программой сборки, а при модификации уже подписанных дополнений ещё и папку «META-INF». Т.к. мы имеем дело с ещё не собранным дополнением, то это не требуется. Следующим шагом будет редактирование файла «package.json», расположенного опять же в корне каталога распакованного расширения. В нашем случае его начало выглядит так:
{
"name": "random-agent-spoofer",
"title": "Random Agent Spoofer",
"id": "jid1-AVgCeF1zoVzMjA@jetpack",
"description": "Allows the use of various browser profiles (including useragent ,platform, oscpu, accept headers and other options), which it can randomly switch between after a chosen period of time has expired",
"author": "dbyrne",
...
}

Если в нём содержится параметр «id» его надо либо изменить, либо удалить. В противном случае, мы получим ошибку при попытке подписи о том, что не являемся его владельцем.
Далее командуем следующее «заклинание» для сборки расширения в архив:

Jpm xpi --addon-dir <путь к папке куда распаковали>

Или просто:

Jpm xpi , если текущий каталог это и есть корень распакованного расширения.

На выходе должен появиться файл собранного расширения.xpi, который и будем подписывать.

А теперь приготовим свой api-ключ, ради получения которого и регистрировались на addons.mozilla.org . Его можно увидеть по адресу addons.mozilla.org/ru/developers/addon/api/key в таком виде:

Издатель JWT: Секрет JWT:

Где Ваш персональный ключ. И в заключение, собственно, сам акт подписания осуществляем скомандовав:

Jpm sign --api-key --api-secret --xpi <путь к расширению полученному на предыдущем шаге>

Если всё пройдёт без ошибок и автоматическая проверка будет пройдена, то в текущем каталоге мы получим подписанное расширение, в котором и нуждались.

Полезные ссылки:
Документация по jpm: developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm
Signing Api: olympia.readthedocs.io/en/latest/topics/api/signing.html

Всем спасибо за внимание, удачи!