Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > Astraport

Рейтинг: 5.00. Голосов: 3.

Подпись кода для AIR приложения.

Запись от Astraport размещена 08.11.2011 в 22:16
Обновил(-а) Astraport 19.01.2013 в 13:08

Получение сертификата подписи кода для 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
При запуске консоль OpenSSL запросит информацию для создаваемых ключей: страну, область, имя, электронку, пароль. Оба полученных файла по сути текстовые файлы и прекрасно открываются и редактируются в блокноте.

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
7. Затем опять запускаем OpenSLL и создаем собственно файл сертификата (mycert.spc):
Код:
openssl crl2pkcs7 -nocrl -certfile mycert.pem -outform DER -out mycert.spc
Но это все ещё не конец. Что бы компилятор принял сертификат, он должен быть в форматах либо p12, либо pfx. Поэтому нужно сконвертировать пару mycert.spc + mykey.pvk в newcert.pfx. Это возможно двумя способами. Оба способа заняли у меня почти пол дня. Тулза pvkimprt упорно не хотела создавать итоговый PXF сертификат, а другую утилиту - pvk2pfx, никак не удавалось найти не в .NET SDK, не в Visual Studio (где она обязана была находиться). Поиск в сети тоже не давал результата. С большим трудом, обратившись к мировому сообществу, удалось решить проблему, прислали pvk2pfx.exe и сертификат наконец-то был сгенерирован. На всякий случай приложил эту тулзу для конвертации к статье.

Каково же было мое разочарование, когда начав сборку одной из AIR программ и вставив в Flash Builder`е новый сертификат вывалилась ошибка "Unable to build a valid certificate chain for the signer".

Пришлось ещё немного повозиться. Для решения проблемы нужно установить (импортировать) сертификат в Internet Explorer и затем, изменив настройки на максимальные и использовав закрытый ключ, экспортировать сертификат как файл обмена личной информацией (PKCS #12 или PFX). Только после всего этого, потратив массу времени и нервов, мне удалось скомпиловать программу, которая при запуске явило свету окно с моим именем и информацией, что разработчик проверен.

Надеюсь, все те описываемые сложности с которыми мне пришлось столкнутся не оттолкнут от процесса получения сертификата у других разработчиков и помогут в этом не простом процессе.
Изображения
   
Вложения
Тип файла: zip pvk2pfx.zip (14.0 Кб, 198 просмотров)
Всего комментариев 12

Комментарии

Старый 09.11.2011 03:41 Котяра вне форума
Котяра
 
Аватар для Котяра
Спасибо за подробный рассказ. Для Https похожая процедура вроде - надо послать линк "некоторым" людям, а то запарили своими кривыми сертификатами.
Старый 09.11.2011 04:00 Newred вне форума
Newred
 
Аватар для Newred
Спасибо, очень полезная информация!
Старый 10.11.2011 12:22 BornTOFree вне форума
BornTOFree
Спасибо, весьма полезная информация. Есть еще один вариант, совершенно бесплатный, без использования сертификатов, это создание своего инсталлера и использование библиотек аира, это дает множество плюсов и один весомый минус, так как это нарушает некоторые права использования =)
http://www.flasher.ru/forum/showthread.php?t=131129
Старый 10.11.2011 13:16 Astraport вне форума
Astraport
 
Аватар для Astraport
BornTOFree, можно использовать и нативный инсталятор Adobe, но мне очень нравится использовать на сайте badge, который сам предлагает установить Air, если он не установлен, или обновить, проверяет текущую версию приложения и т. д.
Плюс иногда с этими инсталяторами возникают проблемы при онлайн обновлении приложения.

Ну и самое главное - это антивирусы. Они просто головная боль для мелких разработчиках. У меня был опыт, что написал на AutoIt безобидный модуль в 30 строк, который вызывается из основной программы, делает скриншот экрана и загружает его на сервер. Через полгода программа прописалась практически во всех блэклистах антивирусов.

Кстати, air.exe из темы что вы привели, на моем компе не запускается, видимо Касперский блокирует
Обновил(-а) Astraport 10.11.2011 в 13:22
Старый 10.11.2011 19:16 BornTOFree вне форума
BornTOFree
Касперский не блокирует, вообще на разном железе тестировал, везде работает хорошо(вы, видимо аир библиотеки в одной локации с exe не разместили). И по каким причинам он его будит блокировать? Ничего противоречащего правилам безопасности самой системы не происходит. Этот способ тем и хорош, что пользователю не нужно устанавливать какой-то там аир, имея его библиотеки изначально. Приложение так же работает стабильно, если у ос установлены жесткие правила, к примеру, если ваше приложение записывает данные в базу, при жестких настройках безопасности системы, функции записи или редактирования в стандартном аир приложении будет блокироваться.
Старый 11.11.2011 11:13 DaFive вне форума
DaFive
 
Аватар для DaFive
Подписал таки Спасибо за статью, тоже думаем.
Старый 05.12.2011 22:11 Skyggedans вне форума
Skyggedans
 
Аватар для Skyggedans
Всем привет. Хорошие новости.
С выходом 3-го AIR есть возможность при сборке передать тулзе ADT параметр "-target bundle" и она в отдельную папочку сложит и ресурсы аппликухи, и AIR-рантайм и готовый exe-шник с иконкой приложения. Эту папку можно перенести на любую машину без AIR и просто запустить exe-шник. Теперь все легально и никакого гемора с eulaAccepted
Старый 05.12.2011 23:07 Astraport вне форума
Astraport
 
Аватар для Astraport
Действительно хорошо. Интересно насколько увеличится дистрибутив?
Старый 06.12.2011 02:10 Skyggedans вне форума
Skyggedans
 
Аватар для Skyggedans
Метров на 15, причем традиционно можно выкинуть WebKit.dll если HTMLLoader не нужен, и он станет еще меньше.
Обновил(-а) Skyggedans 06.12.2011 в 02:13
Старый 06.12.2011 11:43 Astraport вне форума
Astraport
 
Аватар для Astraport
Все же не очень хорошая реализация - заставлять юзеров грузить одни и те же 15 Мб. Не пойму почему сложно сделать в том окне, которое выводится если Air не установлен, кнопку "Download"? И после загрузки Air с сервера (если его не было) автоматически продолжить установку программы. На .NET же так делают и размеры там на порядок больше.
Старый 07.12.2011 08:38 alexcon314 вне форума
alexcon314
Кажись, оболочкам - кранты. По крайней мере, в "традиционном" отношении.
Цитата:
Все же не очень хорошая реализация - заставлять юзеров грузить одни и те же 15 Мб.
Имеешь в виду, что аир-приложения будут вскорости настолько в ходу? Тогда уж как с плеером в виндах: аир войдет в ОС как предустановленный модуль.
Можно предоставить на выбор пакет standalone (15 М) и собственно само приложение без рантайма. Пусть сам пользователь решает, не? Потом, standalone хорош для распространения на внешних носителях, будет у пользователя инет или нет - не известно, да и грузить ему тут вообще ничего не надо. Опять же, бывает не всегда удобно инсталлировать приложение, которе для корректной установки должно что-то докачать из сети да еще, порой, заранее об этом не уведомляет, или ломится хрен знает куда.
Обновил(-а) alexcon314 07.12.2011 в 08:41
Старый 03.04.2012 15:37 borshak.com вне форума
borshak.com
 
Аватар для borshak.com
Спасибо за инфу по сертификации!
 

 


Часовой пояс GMT +4, время: 10:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.