Windows SDKでファイルを自己署名する

#windows#証明書

fuji44

要するに、Windows 10 SDKの SignTool で PFX形式の証明書を使ってファイルで署名すればOK。

SignTool sign /fd SHA256 /a /f sample.pfx /p passpass target_file

詳細

事前に、 Windows 10 SDK の Windows SDK Signing Tools for Desktop Apps をインストールしておく。

バージョンによる違いがあるが、 SignTool のパスは以下。

C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64

PFX形式の自己証明書を作成する

証明書がない場合は、自己証明書を作成する。 既に公開鍵と秘密鍵を持っている場合はpfxファイルに変換できる

$cert = New-SelfSignedCertificate -Type Custom -Subject "CN=fuji44 Software, O=Team fuji44, C=JP" -KeyUsage DigitalSignature -FriendlyName "fuji44" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")

ちなみに、作成した証明書はdirコマンドで確認できます。

dir Cert:\CurrentUser\My\

自己証明書をexport

$password = ConvertTo-SecureString -String passpass -Force -AsPlainText 
Export-PfxCertificate -cert $cert -FilePath $HOME\fuji44.pfx -Password $password

ファイルを署名する

証明書を使ってファイルを署名

SignTool sign /fd SHA256 /a /f fuji44.pfx /p passpass secdrv.sys

参考