Pull to refresh

Подпись объектного кода сертификатом от StartSSL. По шагам — заплатил, получил, подписал

Reading time4 min
Views11K

Приветствую! Хочу поделиться своим опытом как я получил сертификат для подписи объектного кода. Много статей и постов написано о цифровой подписи, и бюджетном StartSSL. Я решил потратив почти $ 60, попробовать пройти по этому пути и поделиться с обществом своим опытом.
Относиться все ниже изложенное исключительно к моему личному опыту и относится к ОС Windows.

StartSSL


Шаг первый — Получение личного сертификата — на сайте www.startssl.com вход в личный кабинет по сертификату. На главной странице нажимаем «Sign-up» и заполняем все поля. Получаем именной сертификат и устанавливаем. Сразу столкнулся с проблемой — корректно работает — только в Mozilla Firefox, в остальных браузерах проблемы со входом в личный кабинет. Сделайте резервную копию сертификата и сохраните на внешнем носителе.
Сертификат в браузере


Шаг второй — подтверждение личности — class 2. Этот этап требует оплаты. Фактически для получения сертификата это — необходимый пункт. Цитата с сайта: «Стоимость проверки физических лиц и организаций US $ 59.90 каждая проверка.» На этом этапе нужно предоставить копии документов — паспорт, водительские права если есть, могут попросить в процессе переписки еще документы — у меня просили какой-нибудь документ с печатью и моими паспортными данными. Оплату производил через «PayPal» — в «Tool Box» — «Add Credit Card | PayPal | Ticket» можно выбрать несколько способов оплаты. Они выставляют счет и ждут оплаты. После того как оплата подтверждена — высылают заказное письмо с кодом верификации по почте. Это самый долгий этап — письмо идет около месяца. Приходит на электронный ящик уведомление что отправили почтой. По прошествии 3 недель, я уже начал нервничать и написал в поддержку — в ответ прислали номер почтового отправления по которому можно отследить где находится письмо.
Путь письма по России


Само письмо



Шаг третий — подтверждение кода из полученного письма «Tool Box» — «Submit Verification Code»

Вводим номер письма и код подтверждения. И если все правильно, то нас поздравляют и просят потерпеть до 6 часов.

Через некоторое время получаем письмо с содержимым:
«Congratulations! Your Class 2 Identity Validation has been confirmed and approved. You are eligible for certificates at Class 2 level until 2015-10-04.» — Бинго!!! Теперь есть возможность получить долгожданный сертификат для подписи кода!

Именная карта идентификации

Четвертый шаг — я заранее спросил в поддержке как делать подпись — и мне прислали ссылку на форум.
Сперва я начал делать все по первой инструкции, но не удачно. По порядку:

Файлы которые мне понадобились:
1. OpenSSL для windows версии 0.9.8 или выше. Я использовал OpenSSL версию 1.0.1 32 битную — полную.
2. signtool.exe — утилита из состава .NET Framework. Скачал отдельно откуда-то из интернета.

Устанавливаем OpenSSL — путь по умолчанию у меня — C:\OpenSSL-Win32\bin — в этой папке бинарные файлы необходимые для создания сертификата. Затем открываем командную строку и переходим в эту папку и запускаем openssl:

req -new -newkey rsa:4096 -nodes -keyout codesign_privatekey.pem -out codesign_certificate_request.csr


В процессе будут заданы вопросы:
1.Страна 2 буквы — в нашем случае: RU
2. Штат или провинция — полное название.
3. Город.
4. Название организации.
5. Название подразделения.
6. Доменное имя или Имя.
7. Адрес электронной почты.
— остальное можно не заполнять.
Для того чтобы поле оставить не заполненным можно поставить точку вместо значения.
Пароль на закрытый ключ можно не ставить, вернее его ставить не рекомендуют, хотя я поставил, плохо читал инструкцию, но проблем не заметил, главное пароль не забыть — сертификат выдается один раз.

В текущей папке, в моем случае «C:\OpenSSL-Win32\bin» появятся два новых файла:
codesign_privatekey.pem — закрытый ключ.
codesign_certificate_request.csr — файл запроса сертификата.
Оба этих файла можно открыть текстовым редактором. Нам понадобится codesign_certificate_request.csr открываем его текстовым редактором — например блокнотом, и копируем все содержимое в буфер обмена <ctrl-a><ctrl-c>.
На сайте www.startssl.com заходим в раздел «Certificates Wizard», некоторые пункты становятся только после прохождения валидации и в поле «Certificate Target:» в выпадающем меню выберем пункт «Object Code Signing Certificate» — дальше откроется окно куда нужно вставить ранее скопированный текст<ctrl-v>. Затем нажать кнопку для продолжения. И снова мы видим табличку с просьбой подождать несколько часов пока будет проверятся запрос. После проверки приходит уведомление на почту с поздравлением. И теперь можно получить сертификат в «Tool Box» — «Retrieve Certificate» — там выберем свой сертификат нажимаем далее и копируем весь текст из поля «Certificate:» — а затем сохраняем в файл как текстовый документ например: codesign_certificate.crt. Затем снова запускаем OpenSSL из командной строки.

openssl pkcs12 -export -out codesign.pfx -inkey codesign_privatekey.pem -in codesign_certificate.crt

Будет запрошен пароль для закрытого ключа, если Вы его установили, введите, затем попросит ввести пароль для экспорта ключа — оставьте пустым.
Должен создаться еще один файл codesign.pfx — которым мы будем подписывать программы.

Пятый шаг, заключительный.

Теперь мы имеем codesign.pfx в нем содержится все что нам необходимо для цифровой подписи файла.

Для подписи файла нужно выполнить такую команду.
signtool.exe sign /d "%Название проекта%" /du "%http://ВашСайт%" /f "codesign.pfx" /t "http://timestamp.verisign.com/scripts/timestamp.dll" /v "%путь до вашего файла%"

Естественно поля нужно заполнить в соответствии с Вашими задачами.

У меня сначала возникла проблема при попытке подписи файла — оказалось утилите signtool.exe требуется capicom.dll после установки возможно придется зарегистрировать эту библиотеку в системе — запустите командную строку от имени Администратора, потом перейти в папку где находится capicom.dll и выполнить
regsvr32 capicom.dll 
— после этого все стало работать и файлы стали подписываться.

Скриншоты подписанного файла:





Для удобства я написал небольшую утилиту в которой можно указать все данные и файлы и подписывать пачками.
Этот сертификат создается один раз, на один год. Подпись действительна в WindowsXP SP3 и выше.

Подписать такой подписью можно программы, dll-ки, службы. Для подписи драйверов не подойдет.
Нужна или нет цифровая подпись? Это решает каждый сам. Для примеру некоторые антивирусы безжалостно удаляют любую неизвестную программу с флешки, что случалось в моей практике, — возможно их поведение измениться когда они увидят что у файла есть подпись.
Нужно $60 и месяц времени — и Вы счастливый обладатель цифровой подписи.

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

Если будут вопросы добро пожаловать комментарии чем смогу — помогу. Найдете ошибки — пишите в личку.
Надеюсь этот пост поможет тем кто сомневается и не решается на такой шаг.
Tags:
Hubs:
Total votes 4: ↑4 and ↓0+4
Comments5

Articles