Signtool. Подпись файлов сертификатом

Первым делом стоит определиться зачем кому-то может понадобиться подписывать какие-то файлы сертификатом. В общем смысле, в целях безопасности. Если же привести конкретные примеры, то например для подписания своего драйвера, ведь не подписанные драйвера блокируются в  x64 системах начиная с Windows 7. Или же для того что бы добавить файл по сертификату в Whitelist антивируса, что бы не было ложных срабатываний.
Далее давайте детально разберем алгоритм подписания файлов.

  1.  Для получения signtool.exe качаем Windows Software Development Kit (SDK) и производим нехитрую установку:
  2. После установки находим утилиту по пути C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin
  3. На сервере экспортируем сертификат через менеджер сертификатов. Используем любой пароль, например, 12345
    Так же экспорт можно выполнить средствами PowerShell:

    Get-ChildItem -Path cert:\LocalMachine\My | Where-Object { $_.hasPrivateKey } |
    Foreach-Object { [system.IO.file]::WriteAllBytes( "$home\$($_.thumbprint).pfx",( $_.Export('PFX', '12345')) ) }
    
  4. Копируем сертификат и подписываемый файл в папку с утилитой signtool.exe
  5. cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin
  6. Используя ранее заданный сертификату пароль, подписываем сертификат командой:
    signtool.exe sign /fd SHA256 /a /f cert.pfx /p 12345 file.ps1
    
  7. Забираем подписанный сертификатом файл по пути C:\Users\%username%\AppData\Local\VirtualStore\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin
Подписывать пакетные файлы(bat\cmd)  нельзя

 

 

Добавить комментарий

Ваш адрес email не будет опубликован.