А, вдогонку, есть и другой способ, можно ведь выдать самому себе сертификат, это делается примерно вот таким командным файлом (но инструменты должны быть в системе, они с Visual Studio ставятся):
Код: Выделить всё
REM Creating a self-signed certificate authority (CA):
makecert -r -pe -n "CN=Andrey" -ss CA -sr CurrentUser -a sha256 -cy authority -sky signature -sv Andrey.pvk Andrey.cer
REM Importing the CA certificate:
certutil -user -addstore Root Andrey.cer
REM Creating a code-signing certificate (SPC):
makecert -pe -n "CN=Andrey" -a sha256 -cy end -sky signature -ic Andrey.cer -iv Andrey.pvk -sv Andrey.pvk Andrey.cer
REM Convert the certificate and key into a PFX file:
pvk2pfx -pvk Andrey.pvk -spc Andrey.cer -pfx Andrey.pfx
Это не я придумал, это вот отсюда:
https://stackoverflow.com/questions/848 ... on-windows
Если вы всё правильно сделаете, то у вас добавится сертификат, который можно использовать в билд-спецификации и подписывать им файл:

Ну или через командную строку:
Код: Выделить всё
REM Using the certificate for signing code:
signtool sign /v /fd SHA256 /f Andrey.pfx /t http://timestamp.comodoca.com/authenticode Application.exe
Тогда в свойствах появится закладка цифровой подписи (извиняйте за немецкие скриншоты):

Ну и там дальше можно детали посмотреть:

Серийник и "отпечатки пальцев"

Тогда проверять аутентичность программы можно прямо из командной строки, официально
так в самом простейшем случае
или сяк (по идее надо отпечаток тоже проверять, чтобы быть уверенным в том, что это именно ваш сертификат):
Код: Выделить всё
$sig = Get-AuthenticodeSignature "Application.exe"
if ($sig.Status -eq 'Valid') { "Valid" } else { "Invalid: $($sig.Status)" }
Get-AuthenticodeSignature "Application.exe" | Select -ExpandProperty SignerCertificate | Format-List Thumbprint
Плюсом тут то, что этот ключ меняться от билда к билду больше не будет, так как он из сертификата прилетает, ну и оно более верно с идеологической точки зрения, чем решение выше "на коленке". По сути там тоже самое и хэш sha256 используется. Но заморочек чуть больше. Понятно, что проверку на аутентичность в Windows такой сертификат не пройдёт (для этого его покупать надо), но как своя собственная цифровая подпись — почему бы и нет. На работе у нас сертификат куплен, раньше это был просто pfx файл с паролем, а сейчас запущен сервер подписи, я ему кидаю файл, а он мне возвращает подписанный.