1

Я хотел бы поэкспериментировать с подписью исполняемого файла программного обеспечения. Я боюсь, что есть что-то, что ускользает от меня.

Я доберусь до точки, где я получу сертификат от CA, но до этого я хотел бы знать, что я делаю, поэтому я сделал тест:

Я создал самозаверяющий сертификат:

makecert -r -ss myPrivateCert -sk c:\test -n "CN=My Company Inc." testCert.cer

затем подписали исполняемый файл:

signtool sign /v /s myPrivateCert /n "My Company Inc." /t http://timestamp.verisign.com/scripts/timstamp.dll c:\folder\my_installer.exe

Для обеих команд я получил успех.

Шаг 3: "Установите тестовый сертификат": http://msdn.microsoft.com/en-us/library/bb756995

Успех.

(Примечание: в папку c:\test я поместил сертификаты, загруженные из предложенного Microsoft списка перекрестных сертификатов, например, Общий первичный центр сертификации VeriSign Class 3 Public Primary Certification Authority - G5.cer - Я просто предполагаю, что должен был это сделать.)

Я запускаю certmgr c:\folder\my_installer.exe

и я получил список из 3 сертификатов, которые я добавил, с Subject, Issuer, Serial Number ... (от My Company Inc. и Verisign), так что, видимо, все хорошо.

Даже после этого, если я дважды щелкну установщик (или исполняемый файл), я получу сообщение UAC о неизвестном издателе ...

Итак, что еще мне нужно сделать, чтобы эта коробка либо исчезла, либо произнесла «Моя компания» для производителя? И это только для локальной машины, делающей все вручную ...

Для реального тестирования я предполагаю, что мой клиент - это среда VirtualBox ... так? Следующий шаг: переместить установщик в VirtualBox и запустить его?

Но как мне сообщить клиенту о ключе или сертификате или что-то еще? Копировать ли файл cer вместе с exe-файлом? Я должен поместить это в специальное место? Копирую ли я другие файлы? Должен ли я снова запустить mmc? Будут ли пользователи делать что-то подобное? Потому что это кажется чрезвычайно сложным, с точки зрения пользователя ... Это очень сбивает с толку ...

Я предполагаю, что, если я куплю настоящий сертификат у Verisign, например, он будет аутентифицироваться через Интернет, и мне не придется делать ничего другого (кроме двух команд выше, за исключением -r)?

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

1 ответ1

2

Он не "проходит проверку подлинности через Интернет" (кроме проверки списка отзыва сертификатов (CRL)) - корневые центры сертификации встраиваются в операционную систему и устанавливаются либо Центром обновления Windows, либо установочным диском ОС. , Другими словами, они представляют собой набор статических данных на жестком диске, которые нельзя (легко) изменить.

То, как вы получаете надоедливую коробку, может быть либо:

  • Доверяйте своей подписи CA на snakeoil (как правило, плохая идея, но она будет работать); или же
  • Получите его с подписью доверенного публичного корневого центра сертификации или одного из его посредников.

Вы процитировали Verisign. Хорошо. Они являются одним из нескольких возможных поставщиков для предоставления вам сертификата для подписи кода. Окно все еще появляется, потому что, AFAIK, Windows запрограммирована на автоматическое всплывающее предупреждение для всех самозаверяющих сертификатов. Если бы вы попытались сгенерировать CSR на основе своего собственного созданного корневого CA, вы могли бы заставить коробку исчезнуть, доверяя своему корневому CA, и это сработало бы. Но тогда вам придется заставить своих клиентов доверять вашему корневому ЦС, что в большинстве случаев не подойдет для этой цели. Следовательно, общественная сеть доверия - самый простой путь. Продавец обычно даже дает вам четкие инструкции о том, как использовать их сервис и как подписать ваш код.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .