Автоматизация цифровой подписи файлов

Обычно, в результате покупки сертификата цифровой подписи Authenticode, на руки выдаются два файла:

  • .pvk – закрытый ключ, например: “my_pvk.pvk” + пароль к нему, например: “my_pvk_password”
  • .spc – сертификат издателя программного обеспечения, например “my_spc.spc”

Если нужно подписать:

  • сразу несколько файлов
  • в автоматическом режиме
  • минуя необходимость каждый раз вводить пароль для файла закрытого ключа
  • без использования хранилищ сертификатов
  • без использования сторонних программ

…то последовательность действий будет такая:

На основе файлов закрытого ключа и сертификата создать pfx-файл:

pvk2pfx /pvk my_vk.pvk /spc my_spc.spc /pfx my_pfx.pfx /pi my_pvk_password

В результате будет создан файл “my_pfx.pfx”, содержащий и сертификат, и закрытый ключ.

Процесс подписи исполняемого файла “my_file.exe” сертификатом “my_pfx.pfx” будет выглядеть так:

signtool sign my_file.exe /f my_pfx.pfx /p my_pvk_password

Полезно также добавить описание файла (параметр “/d”), URL-адрес страницы или сайта с описанием (параметр “/du”) и URL-адрес сервера отметок времени (параметр “/t”):

signtool sign my_file.exe /f my_pfx.pfx /p my_pvk_password /d “Мой файл” /du “http://www.my_file.com” /t “http://timestamp.verisign.com/scripts/timestamp.dll”

Полный список параметров signtool можно найти тут. Утилиты pvk2pfx и signtool входят в состав Windows SDK for Windows Server 2008 and .NET Framework 3.5.