- не пользоваться неподписанными расширениями (плохой вариант);
- использовать небрэндированные сборки;
- идти окольными путями, пытаясь отключить проверки любыми способами, некоторые из которых предложены в следующих комментариях:
https://geektimes.ru/post/279132/#comment_9480372
https://geektimes.ru/post/279132/#comment_9480382
- подписать необходимое расширение самостоятельно.
Как вы уже догадались, здесь пойдёт речь о последнем способе. Если мы не планируем распространять расширения через официальный каталог, то подпись мы можем получить без ручных проверок, т.е. легко и просто.
Для этого нам понадобятся:
- учётная запись на addons.mozilla.org
- установленный nodejs версии >= 0.10
- npm версии >=3.0.0 (npm up npm)
- 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: <private data>
Секрет JWT: <private data>
где <private data> — ваш персональный ключ. И в заключение, собственно, сам акт подписания осуществляем скомандовав:
jpm sign --api-key <api-key data> --api-secret <api-secret data> --xpi <путь к расширению полученному на предыдущем шаге>
Если всё пройдёт без ошибок и автоматическая проверка будет пройдена, то в текущем каталоге мы получим подписанное расширение, в котором и нуждались.
Полезные ссылки:
Документация по jpm: developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm
Signing Api: olympia.readthedocs.io/en/latest/topics/api/signing.html
Всем спасибо за внимание, удачи!
Комментарии (26)
kranky
09.08.2016 12:32>люди столкнувшиеся с этой проблемой встали перед выбором, либо:
Забыли ещё два весьма логичных, учитывая взятое направление развития фф, варианта:
5. Перестать обновлять ФФ.
6. Перейти на другой браузер.
Лично я пока выбрал пятое, но если в новых браузерах появятся какие-то новые полезные технологии, а не только свистелки, то можно будет и к шестому прибегнуть.Lindon_cano
09.08.2016 12:53Более логичным будет обновлять Fx, но делать это на Unbranded builds. Вот специально для тех кому нужны левые неподписанные расширения собирают Unbranded builds.
sumanai
09.08.2016 13:32Эти сборки- издевательство над пользователями, так как не обновляются автоматически. То есть снижают безопасность, ухудшая её по сравнению с прежней ситуацией, когда ФФ позволял ставить неподписанные дополнения и имел автообновление.
Lindon_cano
09.08.2016 13:57+1Если человек отказывается от безопасности и хочет использовать неподписанные дополнения, то он должен быть готов ко всему остальному. Это не издевательство над пользователем, а защита и себя, и пользователя. Что бы вы не говорили поставив левое дополнение, что это Firefox виноват, если вы ставите обезбренженную сборку, то вы добровольно отказываетесь от Firefox и безопасности.
Ну а обновления автоматизировать никто не мешает, откройте для себя ppa или его аналоги, настройте скрипты и собирайте автоматом, да обновляйте, хоть себе, хоть своим троюродным бабушкам и пятиюродным дедушкам.sumanai
09.08.2016 14:11> Если человек отказывается от безопасности и хочет использовать неподписанные дополнения, то он должен быть готов ко всему остальному.
Глупость. Если я не куплю подушки безопасности в машину, то что, мне и ремни безопасности не ставить?
Если кто- то решил отказаться от одного элемента безопасности, это не значит, что его нужно лишать всех остальных.
> Ну а обновления автоматизировать никто не мешает, откройте для себя ppa или его аналоги
Подскажите, как настроить ppa на Windows XP.Vilgelm
09.08.2016 17:30+1Но если вы пользуетесь Windows XP, то чем вас не устраивает unbranded builds? Необновляемая система и необновляемый браузер, звучит логично.
sumanai
09.08.2016 20:05Браузер и система это разные вещи. Запуск кода контролируется групповыми политиками, поэтому единственная возможность попасть вредоносной программе на ПК- это эксплоиты браузера, которые и закрываются обновлениями (и EMET).
И браузер обновляется по многим причинам, не только безопасность, но и производительность и новые фичи.
Lindon_cano
09.08.2016 20:29Цель Mozilla — защита своего бренда. Если вы не хотите защиты дополнений, то вам предлагают пользоваться браузером не использующим их бренд и это правильно.
С XP никак не могу помочь, проблемы распространения софта на мертвых ОС меня не интересуют, ни на Windows XP, ни на TR-DOS.sumanai
09.08.2016 20:38> Цель Mozilla — защита своего бренда.
Скоро защищать будет нечего, такими темпами, компания обанкротиться и её купят какие-нибудь китайцы.
> то вам предлагают пользоваться браузером не использующим их бренд и это правильно.
Это правильно, а вот отсутствие автообновления на них- это неправильно.
MTonly
09.08.2016 17:21+1А ещё есть Firefox Developer Edition (Aurora) (сейчас в 50-й версии), где неподписанные расширения де-факто без проблем работают.
Baton34
09.08.2016 21:307. Перейти на FF ESR, хотя это и временное решение.
Я выбрал этот вариант, т.к. есть несколько брошенных разработчиками расширений, а без них FF для меня ничем не отличается от любого другого браузера. Плюс из-за постепенного выпиливания функций из FF начались проблемы с работоспособностью одного из них.
zeit-geist
09.08.2016 13:03Ваше дополнение не смогло пройти валидацию, в нём найдена 1 ошибка.
Add-ons built with «cfx» are no longer accepted
выходит вот это, пытаюсь подписать расширение из этой статьи
dartraiden
09.08.2016 14:33Изменена семантика биндингов let и const на глобальном уровне. Подробности. Это сломало все дополнения, собранные со старыми версиями JPM. Mozilla самостоятельно пересобрала дополнения, размещённые в официальном каталоге, с новой версией JPM. К сожалению, избежать нарушения совместимости невозможно, старая семантика была несовместима со спецификацией ES2016. Кроме того, перестанут работать все дополнения, собранные с помощью cfx.
cfx is no longer supported as of Firefox 44 and no longer accepted for add-on submission. jpm should now be used instead. For information on how to migrate from cfx to jpm see this guide.
maxout
Для тех, кто не хочет связываться со страшными непонятными словами npm, nodejs и прочими signing api, а просто желает чтобы любимые дополнения работали как раньше:
1. Регистрируемся на addons.mozilla.org
2. Инструменты — Отправить новое дополнение
3. Ставим галку «Не вносить в список моё дополнение на данном сайте»
4. Заливаем файл дополнения (это обыкновенный zip-архив, распаковываем старое — в файле install.rdf меняем em:id на любой другой текст — запаковываем назад)
5. Получаем ссылку на подписанное дополнение, проходим по ней — дополнение ставится в браузер.
6. Profit.
Когда FF без объявления войны отказался дружить с моими дополнениями, а работать нужно было здесь и сейчас, я подписал так всё, что мне нужно, за 5 минут, из них дольше всего регался на сайте.
sumanai
> Получаем ссылку на подписанное дополнение, проходим по ней — дополнение ставится в браузер
Можно тупой вопрос- а как выглядит эта ссылка? Ну пришла мне ссылка, открылась вот такая страница, а дальше куда?
https://imgur.com/SmgQZdd
maxout
на «версия 3.0.0 beta 3» нажимайте, попадаете в управление версией, там скачивается файл
sumanai
У меня там качается неподписанный, по моему, вообще без изменений. Браузер не ставит как неподписанное. И вообще, я едва до той страницы добрался, почему то на третьем шаге все галочки с выбором ОС были сняты и заблокированы, пришлось через инструменты разработчика разблокировать.
maxout
подозреваю, что совершенно не зря они были заблокированы. возможно, в rdf что-то странное прописано, или сильно устаревшее.
вставьте туда вместо существующих таргетов:
<em:targetApplication>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>24.0</em:minVersion>
<em:maxVersion>*</em:maxVersion>
</em:targetApplication>
и попробуйте снова залить.
sumanai
Я пытался подписать третью версию Firebug, не знаю, что они там могли такого написать:
https://getfirebug.com/releases/firebug/3.0/
Вот таргеты оттуда, вполне нормальные вроде:
<em:targetApplication>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>44.0a2</em:minVersion>
<em:maxVersion>*</em:maxVersion>
</em:targetApplication>
maxout
ну и вообще пробегитесь глазами по rdf, возможно там что-то явно не так, как должно быть =)
если аддон не какой-то приватный и покрытый печатями интеллектуальной собственности, можете мне его в личку скинуть, посмотрю.
maxout
ммм, попробовал подписать ваш старенький файрбаг — всё подписалось, загружается, ставится и работает.
даже не знаю, попробуйте в другом браузере залить/скачать
sumanai
Так не старенький, а 3.0 бета3, новее в этой ветке нет, а 2.0 несовместим с многопроцессностью.
Пробовал чистым профилем ФФ, пользоваться другим браузером для загрузки на AMO как-то…
maxout
я не разбираюсь, думал он obsolete. anyway — 3.0 beta 3 скачанный с вашей ссылки нормально заливается и скачивается уже подписанный. что-то у вас в консерватории не так, задизабленные галки смущают. если ехать важнее шашечек, то залить и скачать xpi можно хоть через IE )
sumanai
Я ещё сильнее не разбираюсь))
Ладно, чёрт с ним, спишу на ХР на ПК и плохую погоду на Марсе.
dartraiden