Подпись кода для AIR приложения.
Получение сертификата подписи кода для AIR оказалось совсем не простым и довольно длительным делом. Насколько я понял, этим занимались единицы и информации по этому вопросу в сети крайне мало. Поэтому я решил подробно описать процедуру получения и установки сертификата. Это важно не только для информирования коллег, но и для себя самого – возможно процедуру придется повторить в будущем.
ДЛЯ ЧЕГО НУЖЕН СЕРТИФИКАТ ПОДПИСИ КОДА?
В основной массе случаев он, конечно, не нужен. Но если вы планируете продвигать свое приложение, распространять его в сети, тем более, если намерены продавать его (shareware) или каким-то другим способом получать коммерческую выгоду, то наличие подписи кода очень желательно. Возможно подпись кода необходима в InMarket и других крупных магазинах софта, читал об этом когда то.
В Adobe Flash Builder можно создать сертификат самостоятельно, но он не будет подписан соответствующими организациями и поэтому, при установке вашей программы, пользователи увидят окно примерно следующего содержания:
Конечно, такое окно не увеличит количество желающих продолжить установку. Мне, например, писали несколько юзеров с просьбой предоставить доказательство, что программа не содержит вирусов, т. к. тема эта сейчас крайне актуальна. Приходилось делать онлайн проверки и слать ссылки с отчетами проверок на вирусы.
Кроме того, сертификат подписи гарантирует, что ваша программа не была модифицирована злоумышленниками с целью внедрить в неё шпионские модули. Это тоже вполне вероятный вариант, если приложение популярно.
В результате, в подписанном приложении, мы получим при установке программы примерно такое окно:
Сразу скажу, что в окне будет выводиться имя разработчика (на английском) или название организации (при получении сертификата на организацию). Поэтому страдающим манией преследования или по каким-то причинам желающим оставаться анонимными, от затеи получить сертификат лучше отказаться. Получить сертификат на Васю Пупкина или на Mega Developer Corporation Inc очень сложно – проверка данных проводится доскональная. Так что лучше все делать по-честному, хотя это не всем нравится в нашей стране, но об этом в следующей главе.
ФОРМАЛЬНОСТИ ПОЛУЧЕНИЯ СЕРТИФИКАТА ПОДПИСИ КОДА.
Тщательно изучив рынок сервисов предоставляющих услуги выдачи сертификатов подписи кода, я нашел самый дешевый вариант. Это компания StartSLL имеющая отделения в разных частях мира, но что довольно приятно и удобно, в Израиле, где работают, сами понимаете, русскоговорящие сотрудники. И дело здесь совсем не в языковом барьере. Дело в том, что документы приходится предоставлять на русском языке и они довольно специфичны и не всегда понятны иностранцам.
Стоимость сертификата подписи кода в StartSLL составила всего $ 59.90. На сайте описаны все возможности сертификата. Кажется, тем же сертификатом я смогу подписывать не только код, но и HTTPS, если мне это в будущем потребуется. Сертификат выдается на один год, но это не говорит о том, что ваши программы, подписанные сертификатом, через год будут выглядеть как прежде. Нет. Но новые откомпилированные приложения, старым сертификатом уже не получится подписать.
Итак процесс получения сертификата начинается с регистрации на сайте StartSLL. При этом регистрация не только по логину/паролю, а выдается отдельный сертификат для аутентификации на сайте. Этот сертификат выдается при первичной регистрации, он привязан к вашей электронной почте и его, как и все сертификаты, необходимо установить в браузере. Процесс установки сертификатов в браузере неоднократно описан, поэтому на этом особо останавливаться не стоит, там все просто. После регистрации, вы получите доступ к панели управления (пусть вас не смущает довольно старомодный дизайн и не очень удобный интерфейс, все работает как нужно).
Сразу оговорюсь, что при регистрации нужно вводить свои реальные данные (это если вы регистрируетесь как физическое лицо). Конечно, потом всегда можно данные изменить переписываясь с техподдержкой и пояснив причины изменений.
Затем начинается кропотливый процесс валидации. В панели управления есть соответствующий мастер. Валидировать потребуется ещё один электронный адрес и, самое сложное, связку ФИО + адрес + телефон. У меня не оказалось такого документа, где эти данные присутствовали одновременно. Рекомендовалось прислать скан счета телефонной компании, где эта информация обычно бывает. Но, так как уже много-много лет за телефоны и интернет я оплачиваю через веб-интерфейсы, никаких бумажных документов подтверждающих мою личность как гражданина проживающего по указанному адресу у меня не оказалось. Я слал сканы паспортов, водительские права, договора, медицинские страховки – всего этого было мало. В итоге было предложено выслать по указанному адресу заказное письмо с дальнейшими инструкциями. Это меня не очень устраивало, т. к. планировал получить сертификат за сутки, ну максимум двое, а тут приходится ждать ещё неделю, но выбирать не приходилось – карта была зачарджена, куча времени потрачена, хотелось завершить процесс.
Через неделю в полученном письме (из Израиля) был прислан верификационный код, который ввел в панели управления в разделе Submit Verification Code и я наконец-то был верифицирован по Классу 2. После валидации начинается процедура получения собственно сертификата.
ГЕНЕРИРУЕМ СЕРТИФИКАТ ПОДПИСИ КОДА
В панели управления имеется мастер получения сертификата. Им и придется воспользоваться. Но кроме того, потребуется ещё много чего. В этой ветке форума StartSLL есть подробная инструкция (на английском) как сгенерировать сертификат.
Вкратце нужно сделать следующее:
1. Скачиваем OpenSSL по этой ссылке.
2. Создаем два новых файла mykey.pem и myreq.pem вызвав в командной строке OpenSLL
Код:
openssl req -new -newkey rsa:2048 -keyout mykey.pem -out myreq.pem
3. Открываем в блокноте myreq.pem, копируем весь текст вместе с -----BEGIN CERTIFICATE REQUEST-----и
-----END CERTIFICATE REQUEST----- и вставляем в окно мастера сертификатов на сайте StartSLL.
4. Через какое-то время (в моем случае через час) приходит сообщение, что подпись сертификата готова. В панели управления нужно скопировать весь текст из окна, создать в блокноте текстовый файл, вставить туда скопированный код, сохранить файл и потом переименовать в mycert.pem (ну или с любым другим именем, главное расширение).
5. Скачиваем конвертор по ссылке http://www.tech-pro.net/files/pvktool.zip
6. Также в командной строке конвертируем mykey.pem в mykey.pvk при помощи такого запроса:
Код:
pvk -in mykey.pem -topvk -out mykey.pvk
Код:
openssl crl2pkcs7 -nocrl -certfile mycert.pem -outform DER -out mycert.spc
Каково же было мое разочарование, когда начав сборку одной из AIR программ и вставив в Flash Builder`е новый сертификат вывалилась ошибка "Unable to build a valid certificate chain for the signer".
Пришлось ещё немного повозиться. Для решения проблемы нужно установить (импортировать) сертификат в Internet Explorer и затем, изменив настройки на максимальные и использовав закрытый ключ, экспортировать сертификат как файл обмена личной информацией (PKCS #12 или PFX). Только после всего этого, потратив массу времени и нервов, мне удалось скомпиловать программу, которая при запуске явило свету окно с моим именем и информацией, что разработчик проверен.
Надеюсь, все те описываемые сложности с которыми мне пришлось столкнутся не оттолкнут от процесса получения сертификата у других разработчиков и помогут в этом не простом процессе.
Всего комментариев 12
Комментарии
09.11.2011 03:41 | |
Спасибо за подробный рассказ. Для Https похожая процедура вроде - надо послать линк "некоторым" людям, а то запарили своими кривыми сертификатами.
|
09.11.2011 04:00 | |
Спасибо, очень полезная информация!
|
10.11.2011 12:22 | |
Спасибо, весьма полезная информация. Есть еще один вариант, совершенно бесплатный, без использования сертификатов, это создание своего инсталлера и использование библиотек аира, это дает множество плюсов и один весомый минус, так как это нарушает некоторые права использования =)
http://www.flasher.ru/forum/showthread.php?t=131129 |
10.11.2011 13:16 | |
BornTOFree, можно использовать и нативный инсталятор Adobe, но мне очень нравится использовать на сайте badge, который сам предлагает установить Air, если он не установлен, или обновить, проверяет текущую версию приложения и т. д.
Плюс иногда с этими инсталяторами возникают проблемы при онлайн обновлении приложения. Ну и самое главное - это антивирусы. Они просто головная боль для мелких разработчиках. У меня был опыт, что написал на AutoIt безобидный модуль в 30 строк, который вызывается из основной программы, делает скриншот экрана и загружает его на сервер. Через полгода программа прописалась практически во всех блэклистах антивирусов. Кстати, air.exe из темы что вы привели, на моем компе не запускается, видимо Касперский блокирует |
|
Обновил(-а) Astraport 10.11.2011 в 13:22
|
11.11.2011 11:13 | |
Подписал таки Спасибо за статью, тоже думаем.
|
05.12.2011 23:07 | |
Действительно хорошо. Интересно насколько увеличится дистрибутив?
|
06.12.2011 02:10 | |
Метров на 15, причем традиционно можно выкинуть WebKit.dll если HTMLLoader не нужен, и он станет еще меньше.
|
|
Обновил(-а) Skyggedans 06.12.2011 в 02:13
|
07.12.2011 08:38 | |
Кажись, оболочкам - кранты. По крайней мере, в "традиционном" отношении.
Цитата:
Все же не очень хорошая реализация - заставлять юзеров грузить одни и те же 15 Мб.
Можно предоставить на выбор пакет standalone (15 М) и собственно само приложение без рантайма. Пусть сам пользователь решает, не? Потом, standalone хорош для распространения на внешних носителях, будет у пользователя инет или нет - не известно, да и грузить ему тут вообще ничего не надо. Опять же, бывает не всегда удобно инсталлировать приложение, которе для корректной установки должно что-то докачать из сети да еще, порой, заранее об этом не уведомляет, или ломится хрен знает куда. |
|
Обновил(-а) alexcon314 07.12.2011 в 08:41
|
03.04.2012 15:37 | |
Спасибо за инфу по сертификации!
|
Последние записи от Astraport
- Подпись кода для AIR приложения. (08.11.2011)
- Добавление кнопок социальных сетей в Air-приложение (07.08.2011)