自分でデジタル署名を付与するためのメモ
ググるとドライバ関連の話がいろいろと出てくる
参考にしたのは
@tenshouki_jpさんのドライバをデジタル署名する方法
天翔記.jp
要はローカルPCに自分で証明書を作成し自分の証明書を使って署名する
必要なコマンドはmakecat.exe、certmgr.exe、signtool.exe
Windows10 SDKだけでよくVisual Studio Communityは不要だった
公式からWindows10 SDK インストーラー winsdksetup.exeをダウンロード
https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk
必要(インストール)なのは二つ
Windows SDK Signing Tools for Desktop Apps
Windows SDK for UWP Managed Apps
ツールはここにインストールされる(Windows10 1903の場合)
x64 "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64" x86 "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86"
※Windows10の各バージョン用に10.0.14393.0、10.0.15063.0、
10.0.16299.0、10.0.18362.0がインストールされる
証明書はカレントフォルダに.cerファイルが作成される
どこに作成するか悩んだが、ツールのフォルダにそのまま作成した
また証明書名はユーザー名とし、例に従い%username%で指定している
cd /d "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64" makecert.exe /r /pe /ss my /n "CN=%username%" %username%.cer certmgr.exe /add %username%.cer /s /r localMachine root certmgr.exe /add %username%.cer /s /r localMachine trustedpublisher
証明書は一度作成すれば良い
デジタル署名はsigntool.exeで行う
cd /d "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64" signtool.exe sign /a /v /s my /n %username% "署名したいファイル"
/tでタイムスタンプも付与できるが、URLに何を指定するのが最適か
まだ調べていないので現在は未指定
ググったところ以下の2カ所を使っている例があった
http://timestamp.digicert.com http://timestamp.verisign.com/scripts/timstamp.dll