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

1530
Thalia

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

Я доберусь до точки, где я получу сертификат от 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
Horn OK Please

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

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

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

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

Итак ... если я получу сертификат Verisign, что мне придется изменить в моем процессе? Я хотел бы иметь кое-что, что я могу проверить ... Thalia 12 лет назад 0
Это зависит от вашего поставщика. `makecert` предназначен для создания самозаверяющего сертификата. Корневой центр сертификации, который дает вам сертификат подписи кода, определяет процесс. Проверьте, например, http://www.symantec.com/verisign/code-signing/microsoft-authenticode Horn OK Please 12 лет назад 0
Для тестируемого локального решения вы можете использовать `OpenSSL` для генерации соответствующего корневого CA, доверять ему, создавать запрос на подпись сертификата, затем генерировать сертификат, затем доверять * that *, затем использовать` signtool` аналогично тому, как вы используете его сейчас , Использование `signtool` изменится лишь незначительно, но ваш процесс до запуска` signtool` будет сильно меняться от поставщика к поставщику и зависит от того, используете ли вы самозаверяющий, самогенерируемый корневой CA или официальный публичный root CA. Horn OK Please 12 лет назад 1
Спасибо. Я нашел это для Verisign ... Я просто не мог использовать это: https://knowledge.verisign.com/support/code-signing-support/index?page=content&id=AR190, поскольку я не знать, как получить pfx или pvk или spc файлы. Я полагаю, что эти файлы предоставляются CA тогда ... Thalia 12 лет назад 0
В Verisign есть «мастер», который запрашивает у вас некоторую информацию о себе / вашей компании; затем (обычно) это как-то проверяет; затем просит оплату; затем он проведет вас через процесс. Если вы застряли, вы всегда можете получить поддержку от них, если вы платите им за создание сертификата ... Horn OK Please 12 лет назад 0
Кстати, если вы нашли этот ответ полезным, вы всегда можете поднять голос и / или принять. Horn OK Please 12 лет назад 0
Конечно, всегда! Thalia 12 лет назад 0