→ Неподписанные дополнения. Почему браузер Mozilla Firefox запрещает устанавливать элементы Яндекс и другие расширения. Отключение проверки подписи через пользовательские скрипты

Неподписанные дополнения. Почему браузер Mozilla Firefox запрещает устанавливать элементы Яндекс и другие расширения. Отключение проверки подписи через пользовательские скрипты

В свете последних событий связанных с релизом 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

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

В свете последних событий связанных с релизом 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

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

Прежде чем разместить дополнительные расширения на своём официальном интернет портале «addons.mozilla.org » обязательно проверяют все разработки на соответствие с жёсткими критериями, отвечающим всем требованиям безопасности. В случае, если проверка дала положительные результаты, специалисты технической поддержки Mozilla подписывают проверенные приложения своей уникальной цифровой подписью. Данная процедура даёт приложениям право быть установленными в веб-браузер пользователя. Расширения могут быть размещены и на иных сетевых ресурсах, но они также должны отвечать всем требованиям безопасности и конфиденциальности Firefox, иначе они не смогут получить соответствующее разрешение на размещение в интернет сети под знаком партнёра Mozilla Foundation.

О цифровой подписи расширений

Проще говоря, наличие цифровой подписи гарантирует безопасную работу расширения, следовательно, и браузера. Вся ваша личная информация при использовании такого расширения не попадёт в третьи руки и будет в полной сохранности.

Абсолютно все дополнения, работа которых направлена на увеличение возможностей интернет – поисковика должны иметь подпись. Исключениями являются расширения, которые меняют внешний вид панельки инструментов и различные языковые пакеты.

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

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

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

Для этого запустите браузер и в поисковой строке наберите «about:config», без кавычек и нажмите кнопку «Enter» или на вспомогательной строчке слово «Посетить»;

Затем у вас откроется окошко, информация в котором, предупреждает о возможных рисках, жмём по кнопочке «Я принимаю на себя риск»;

В открывшемся окошке найдите параметр «xpinstall.signatures.required» (или просто копируем и вставляем его в строку поиска);

Нажимаем правой кнопкой мышки по параметру и выбираем пункт «Переключить» (или можно дважды кликнуть левой кнопкой мыши).

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

Также вы можете установить другие неофициальные версии браузера Mozilla Firefox, которые тоже позволят менять настройки проверки подписей плагинов.

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

Что ж, продолжим прошлую статью, — в ней говорилось о возможностях обхода запрещений Firefox расширений/дополнений.

Сегодня тема немного посложнее, так что приготовьтесь: нужно будет создать пару файлов сценария для приложения firefox и поместить их в корень ядра, и ещё кое-что поправить в скрытых настройках обозревателя Фаерфокс. В общем, будет очень интересно и что более важно — полезно!


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

Создадим такой файл сценария с расширением JS: имя config.js (кому писанина файлов туго достаётся, их можно просто скачать в финале статьи, и разложить по своим полочкам в папке файлов firefox).

А создаются файлы таким образом: открываем текстовый редактор Виндовс — обычный блокнот и записываем в его тело следующие ниже строки (можно копировать).

Вот начинка первого файла:

// отключаем запрет установки дополнений try { Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {}) .eval("SIGNED_TYPES.clear()"); } catch(ex) {}

Идём по следующему пути:

C: Program Files\Mozilla Firefox

….и закидываем в директорию созданный файл.

Напишем следующий js-файл: с именем — config-prefs.js

// отключаем запрет установки дополнений (файл в связке с config.js) pref("general.config.obscure_value", 0); pref ("general.config.filename", "config.js");

Осиливаем в ядре Firefox и эту дорожку до папки pref, чтобы и туда подкинуть созданный файлик:

С: Program Files\Mozilla Firefox\defaults\pref

Вот и всё!! запрет проверки и установки дополнений браузером Фаерфокс окончен!

И теперь, как в прежние безмятежные времена, запросто можно устанавливать дополнения — без всяких «надуманных» запрещений разработчиков Fire — в обычном и привычном для нас режиме.

Однако нам, как завсегда водится — этих знаний мало!!

А давайте-ка подключим (или включим, кому как угодно)

Мультипроцессность (многопроцессность) это..! хотя, думаю, толковать подробно излишне, — значение понятия логично и ясно, к тому же имеет философскую мультипликационную составляющую скоростной работы вкладок браузера Firefox, о ней в следующей статье подробнее. Непременно подписывайтесь:

Для того, чтобы заработала мультипроцессность включить соответствующую логику обработки данных не составит особого труда — воспользуемся скрытыми настройками браузера (которые кстати пригодятся для тестирования проделанной работы).

В адресной строке браузера (не в строке запросов, а той, что в самом верху окна браузера) копируем и прописываем следующий вензель:

about:config

…жмём «Enter»…

Внимание:

на этом этапе перехода к скрытым настройкам браузера появится логичное предупреждение пользователю (то бишь нам) об осторожности!!

Соглашаемся быть аккуратными!

Теперь предстоит создать новую логическую строку, которая добавится к подобным уже существующим строкам (настройкам) Фаер…

Правая кнопь мышки… выбираете «Логическое» — далее, в окошке записываете саму вариант-логику:

browser.tabs.remote.force-enable

…тут же выпадет следующее модальное оконце, в котором нужно выбрать сущность true

Готово дело!

Можете перезапустить браузер и взглянуть на результат лично выполненной работы.

как эпилог…

После перезапуска обозревателя firefox, снова, в адресной строке прописываем, но уже такой адрес:

about:support

Откроется страничка сводки настроек браузера, а в графе «Мултипроцессные окна» (или многопроцессные…) будет записано «Разрешено пользователем» или «Включены пользователем» т.е вами, дорогой товарищ))

Внимание:

…тем, которые пользуются переводчиком (дополнением) Google Translator for Firefox и его опцией перевода выделенного текста нужно знать!! — возможно, этот способ перевода отключится!

Полный перевод странички (который не всегда корректно отрабатывает) функционировать будет в обычном режиме, а вот опция «выделенного текста» нет!

А вот чтобы использовать настройки опций по полной, без глюк… рекомендую правильно настраивать браузер, например — !

И как только насладимся результатом проверки, давайте уж бонусом к этой статье разберёмся:

как включить мультипроцессорный режим Firefox

Мультипроцессорный (или многопроцессорный) режим в Firefox включаем — может кому пригодится!!

Кстати, в следующей статье подробнее, так что не забудьте подписываться!!

Вновь посетим адресок:

В в адресной строке поиска настроек пропишем следующее:

browser.tabs.remote.autostart

как только результат поиска логической строки выпал — всё здорово! Двигаемся курсоров вдоль строки вправо и меняем выставленное false на true

Смена значений — элементарна: кликаете пару раз на фразу false она мгновенно меняется на true .

А вот полезное видео о настройке не менее полезной программки MozBackup, которая замечательным образом помогает : пароли, расширения, закладки, дополнения и т.п.

Очень служит при переустановке браузера или ОС — в течение минуты восстанавливается привычная работоспособность браузера.

В общем, избавляет от рутины пользовательских настроек.

43-я версия Mozilla Firefox на каналах Stable и Beta блокирует установку неподписанных расширений.

Для отмены проверки подписи у расширений можно изменить настройки:

  • в адресной строке введите about:config и перейдите на страницу;
  • нажмите кнопку "Я обещаю, что буду осторожен" на странице предупреждения;
  • в поле "Поиск" введите название параметра: xpinstall.signatures.require ;
  • найдите его в списке и дважды нажмите на него, чтобы значение "true" изменилось на "false"

Отключение проверки подписи через пользовательские скрипты

В Firefox 48 для Stable и Beta каналов, Mozilla отменила действие параметра xpinstall.signatures.require. На каналах Dev, Nightly и ESR, а так же в сборке Firefox Unbranded, которая представляет собой стабильную версию, параметр ещё доступен.

Все расширения представленные в основном репозитории Mozilla, подписаны в отличае от расширений из сторонних источников.

На сегодня существует множество расширений, предоставляемых приложениями, на платформах разработки Github и Bitbucket, а так же старые расширения, которые больше не поддерживаются разработчиками и не могут быть подписаны. Все они не могут быть установлены в Firefox Stable или Beta стандартными средствами.

Этот способ подразумевает создание двух файлов в основной директории, откуда запускается Firefox.

1. Файл config.js

1.1. Создайте текстовый файл;
1.2. Вставьте в него код:

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

1.3. Переименуйте его в "config.js". Убедитесь, что он называется config.js а не config.js.txt;
1.4. Переместите его в директорию с установленным Firefox:

  • Windows - "C:\Program Files\Mozilla Firefox\ " или "C:\Program Files (x86)\Mozilla Firefox\ ";
  • Linux - "/usr/lib/firefox-<версия> " или "/usr/lib64/firefox-<версия> ";
  • OSX - "/Applications/Firefox.app/ ".

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

2. Файл config-prefs.js

2.1. Создайте второй текстовый файл;
2.2. Вставьте в него код:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");

2.3. Переименуйте в config-prefs.js;
2.4. Переместите в "<корневая директория Firefox>\defaults\pref\ "
например "C:\Program Files\Mozilla Firefox\defaults\pref\ ";
2.5 Перезапустите Firefox.

Теперь вы можете устанавливать расширения с подписью и без в Firefox Stable или Beta.

Что при этом происходит

Код в файле config.js, загружает один из конфигурационных файлов Firefox и удаляет информацию из константы "Signed_Types" в этом файле. Эта константа определяет типы дополнений и расширений, которые должны быть подписаны для установки.

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

Код во втором файле указывает Firefox загрузить файл config.js при запуске.

Странно что это на столько просто, учитывая то что обязательная подпись расширений используется для повышения безопасности.

 

 

Это интересно: