Как отключить проверку подписи для дополнений Firefox?

начиная с версии 42 Firefox по умолчанию отказывается устанавливать неподписанные дополнения. Как отключить эту проверку?

5 ответов


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

  1. на about:config (введите его в адресной строке)
  2. Set xpinstall.signatures.required to false.

больше на https://wiki.mozilla.org/Addons/Extension_Signing


чтобы завершить приведенный выше ответ, я открываю firefox-автоконфигурация, которая состоит из установки на <FIREFOX INSTALLATION DIR>/default/prefs и на <FIREFOX INSTALLATION DIR> это способ отключить 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);

начиная с Firefox 47: выпуск и бета-версии Firefox для рабочего стола не позволят устанавливать неподписанные расширения без переопределения.

для получения дополнительной информации см. Mozilla Wiki страница по подписанию расширения.


отключить проверку подписи надстройки в версиях Firefox

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

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

  • окна
    • C:\Program Файлы \ Mozilla Firefox\
    • C:\Program файлы (x86)\Mozilla Firefox\
  • Linux
    • / usr / lib / firefox -
  • на OSX
    • / Приложения / Firefox.app

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

вы должны добавить код ниже в файл <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");

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

вам также нужно добавить код ниже в качестве файла <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
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
          .eval("SIGNED_TYPES.clear()");
Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {})
          .eval("SIGNED_TYPES.clear()");

результаты

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

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

как это работает

внутри resource://gre/modules/addons/XPIProvider.jsm the const SIGNED_TYPES определяется как Set. Для того, чтобы надстройка требовала подписи, ее тип должен быть членом этого Set. The Set.prototype.clear() метод используется для очистки всех записей из Set. Это приводит к отсутствию дополнительных типов, требующих подписи (код 1, код 2).

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

удалить the META-INF каталог из любого измененного расширения

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

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


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


решение@Makyen работает, но полностью отключит проверку подписи:

Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
      .eval("SIGNED_TYPES.clear()");

вы не имейте информацию о том, подписан ли аддон.

вместо этого я бы предложил следующее:

/* Let unsigned addons live! */
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
          .eval("function mustSign(aType) { return false; }");
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
        .eval("XPIProvider.verifySignatures = function() {}");

он все равно предупредит вас, когда вы попытаетесь установить неподписанный аддон, но он все равно будет работать. Аддон помечен как отключенный в about:addons но на самом деле активно (вы можете отключить/включить его вручную, как обычный аддон).

как работает:

  • mustSign() проверяет, требуется ли подпись для этого типа аддона.

  • verifySignatures() обратный вызов используется для проверки подписей каждый XPI_SIGNATURE_CHECK_PERIOD секунды (т. е. один раз в день)