Я хотел бы поэкспериментировать с подписью исполняемого файла программного обеспечения. Я боюсь, что есть что-то, что ускользает от меня.
Я доберусь до точки, где я получу сертификат от 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)?
Я нашел много указаний по этому поводу в Интернете, но каждое из них оставило меня в замешательстве, как когда я начинал - возможно, у каждого из них были предположения о некотором предварительном знании ...