Программное обеспечение для цифровой подписи - самоподписывающийся сертификат

Программное обеспечение для цифровой подписи - самоподписывающийся сертификат

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

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

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

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 добавленных мной сертификатов с темой, эмитентом, серийным номером... (от My Company Inc. и Verisign), так что, по-видимому, все в порядке.

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

Так что еще мне нужно сделать, чтобы это поле исчезло или вместо производителя появилось "My Company Inc."? И это только для локальной машины, делающей все вручную...

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

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

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

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

решение1

Он не «аутентифицируется через Интернет» (кроме, возможно, проверки списка отзыва сертификатов (CRL)) — корневые CA жестко вшиты в операционную систему и устанавливаются либо через Windows Update, либо с установочного диска ОС. Другими словами, они представляют собой набор статических данных на жестком диске, которые не (легко) модифицируются.

Чтобы убрать раздражающее окно, можно сделать следующее:

  • доверять своему мошенническому центру сертификации (как правило, плохая идея, но она сработает); или
  • Получите его подпись от пользующегося общественным доверием официального корневого центра сертификации или одного из его посредников.

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

Связанный контент