Подписывания своих програм

Что означает именно подписывание программ? Не шифрация, а именно подписывание.

Вот пример одной программы как отображается сертификат ее установщика :

фотка 1

Смысл подписывания не скрыть содержание , а наоборот открыть содержание и приложить к содержанию некий уникальную контрольную сумму (ХЭШ), который можно правильно расшифровать только открытой частью ключа издателя, который в свою очередь открыто прилагается к программе.

Далее получатель может пройти по содержанию хэш функцией (такой же как и у издателя использовалась) и получить своими силами значение (ХЭШ1).

Далее он расшифровывает приложенный ХЭШ приложенным открытым ключом издателя и получает ХЭШ2 , сравнивает ХЭШ2 с ХЭШ1.

Совпало значит содержание не менялось и ему можно доверять , не совпало значит кто-то подделал содержание по пути.

Суть в том , что хэш функция не обратима , то есть зная ее результат не получить исходное содержание практически никак.

С другой стороны подобрать другое содержание (подделать содержание) , чтобы получить такую же контрольную сумму тоже не реально. Надо тупо менять содержание и проверять результат хэш функции.

фотка 2

Что мы имеем для подписывания кода распространяемой своей программы?

https://www.digicert.com/

https://www.ssl.com/ Extended Validation (EV) Code Signing Certificates $249.00 /year

https://sectigo.com/ бывший Comodo 175Евро

https://shop.certum.eu/open-source-code-signing-code.html 25Евро

https://www.globalsign.com/ $289 USD / year

StartSSL закрылся.

Первое впечатление - что все это платно (2021г.). Конечно если у вас большая контора то это не проблема...

MicroSoft утилиты

Программы для подписания кода
signcode.exe

Утилита от Microsoft для подписывания файлов называется singtool.exe . Но сначала сертификат надо создать.

MakeCert.exe создает сертификат.
Pvk2Pfx.exe конвертирует в pfx .
.pfx Personal Information Exchange .

MakeCert.exe у нас например здесь:

C:WinDDK7600.16385.1inamd64MakeCert.exe или здесь :
C:Program Files (x86)Windows Kits10in10.0.19041.0x64

Подписывание приложения через командлеты PowerShell

Это оказался самый быстрый способ на начальном этапе изучения вопроса.

Оказывается есть комбинация клавиш Win X и там достаточно запустить командную строку Windows PowerShell от Администратора и выполнить несколько команд , в результате которых получится само-подписной сертификат для вашей программы.

SAN - Subject Alternative Names это когда надо с разными именами создать сертификат