メインコンテンツまでスキップ

signtool ksp と Windows KSP の統合

signtool ksp はWindows sslTrus Key Storage Provider(KSP)を管理します。KSP のインストールと設定が完了すると、Microsoft signtool.exe はCNG プロバイダーを介してリモート署名サービスを呼び出すことができ、ローカルで秘密キーを保持する必要はありません。

注意

signtool ksp のすべてのサブコマンドは Windows プラットフォームのみをサポートしています。非 Windows プラットフォームで任意の ksp サブコマンドを実行すると、次が返されます: key storage provider is only supported on windows


サブコマンドの概要​

signtool ksp [command]
サブコマンド用途
installKSP DLL をインストールして登録する
uninstallKSP の登録を解除し DLL を削除する
list保存済みの KSP キー設定を一覧表示する
addKSP キー設定を新規追加する(対話式)
del指定した KSP キー設定を削除する(対話式)
説明

--address パラメータは ksp add の場合にのみ有効で、証明書 PEM を取得しリモートサービスアドレスを保存するために使用します。


KSP のインストール​

signtool ksp install

実行後:

  1. 埋め込まれた sslTrusKSP.dll を ProgramData/sslTrusKSP/sslTrusKSP.dll に書き込みます。
  2. ProgramData 内の DLL バージョンが System32 のものと異なる場合は、DLL を System32 にコピーします。
  3. CNG プロバイダーを登録します:sslTrus Key Storage Provider。
  4. KSP 構成ファイル ProgramData/sslTrusKSP/config.dat を保存します(DPAPI 暗号化)。
注意

install はシステムレベルの CNG プロバイダー登録を変更するため、管理者ターミナルで実行することを推奨します。DLL バージョンが同一であることが検出された場合、ksp is already installed を記録して直接戻ります。


KSP のアンインストール​

signtool ksp uninstall

执行后:

  1. CNG Provider を登録解除します:sslTrus Key Storage Provider。
  2. ProgramData/sslTrusKSP/sslTrusKSP.dll を削除します。
  3. System32 内の sslTrusKSP.dll を削除します。
説明

uninstall では、ProgramData/sslTrusKSP ディレクトリ全体は削除されません。保存済みの config.dat、証明書ファイル、およびログは手動でクリーンアップする必要があります。


鍵設定の確認​

signtool ksp list

出力フィールドの説明:

フィールド意味
No番号
CertCode証明書番号
ServerUrlnicsrs または default として表示
AccessKeyAccess Key
AccessSecretマスキング後の Access Secret
説明
  • 設定ファイルがない場合は、no ksp configuration を返します。
  • 設定が存在するがキーリストが空の場合、no ksp key を記録する。
  • AccessSecret はマスキングして表示するが、設定ファイル自体は引き続き機密ファイルとして管理する必要がある。 :::

キー設定を追加​

signtool ksp add

指定 NICSRS アドレス:

signtool ksp add --address nicsrs

コマンドは対話式で、順番に次のように入力します:

Please enter the access key: your-access-key
Please enter the access secret: your-access-secret
Please enter the certificate code: CERT_CODE

実行後:

  1. リモートの /v1/codesign/cert を呼び出して証明書のPEMを取得します。
  2. 証明書を ProgramData/sslTrusKSP/CERT_CODE.crt として保存します。
  3. 鍵の設定を ProgramData/sslTrusKSP/config.dat に書き込みます(DPAPI暗号化)。

証明書番号が既に存在する場合は、次のようにプロンプトが表示されます:

The certificate code already exists, do you want to override it? [y/N]

输入 y 上書きで確定し、それ以外の値または直接 Enter を押すと破棄します。

注意

ksp add は対話型コマンドであり、現在 --access-key、--cert-code などの非対話型パラメータには対応していません。設定を追加するとリモート API にアクセスし、証明書 PEM がローカルの ProgramData に書き込まれます。


密钥設定の削除​

signtool ksp del

証明書番号を入力してください:

Please enter the certificate code: CERT_CODE

実行後、config.dat から一致する鍵設定を削除し、暗号化された設定ファイルを保存し直します。

説明

現在の実装では設定項目のみを削除し、ProgramData/sslTrusKSP/CERT_CODE.crt 証明書ファイルは削除しません。


KSP を使用して Microsoft signtool.exe を利用する​

KSP の設定が完了したら、Windows SDK に含まれる Microsoft signtool.exe を呼び出して Provider を使用します。

注意

以下のコマンド内の signtool.exe は Microsoft Windows SDK に付属するツールであり、sslTrus CLI ではありません。現在のディレクトリや PATH に両方が存在する場合は、Windows SDK 内の signtool.exe の完全なパスを使用して混乱を避けてください。

SHA256 署名の例:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
.\EXAMPLE.exe

SHA1署名の追加例:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
.\EXAMPLE.exe

パラメータ説明:

パラメータ意味
/csp "sslTrus Key Storage Provider"指定する sslTrus インストールの KSP Provider
/kc CERT_CODEKSP キー名を指定し、証明書番号とすること
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crtksp add に保存された証明書ファイルを指定
/fd SHA256 または /fd SHA1ファイルダイジェストアルゴリズム
/tr <url>RFC3161 タイムスタンプサービス
/td SHA256タイムスタンプダイジェストアルゴリズム
/as署名を追記し、既存の署名を上書きしない

トラブルシューティング参考​

エラーメッセージ考えられる原因対応提案
key storage provider is only supported on windows非 Windows プラットフォームで ksp コマンドを実行した。KSP 操作は Windows 上でのみ実行する。
no ksp configurationKSP 設定ファイルがまだ作成されていない。先に signtool ksp install と signtool ksp add を実行する。
no such certificate code削除した証明書番号が存在しない。signtool ksp list を使用して証明書番号を確認する。

セキュリティ注意事項​

  • signtool ksp install および signtool ksp uninstall は Windows システムディレクトリと CNG Provider レジストリを変更するため、通常は管理者権限が必要です。
  • signtool ksp add はリモート証明書インターフェースにアクセスし、証明書ファイルと暗号化設定を ProgramData/sslTrusKSP に書き込みます。
  • Access Secret、KSP 設定ファイル、ローカルログはいずれも機密情報として扱い、ログやバージョンリポジトリには記録しないでください。