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

Windows Provider

sslTrus は KSP(Key Storage Provider) と CSP(Cryptographic Service Provider) の2つのWindows Provider統合方式を提供します。

Windows Providerを通じて、Microsoft SignTool、Visual Studio、MSBuild、インストールパッケージツール、およびその他のWindows暗号化インターフェースをサポートするソフトウェアが、sslTrusのクラウドコード署名機能を利用できるようになります。

署名秘密鍵は常にクラウドHSMに保持され、秘密鍵ファイルをローカルコンピュータに展開する必要はありません。

KSPおよびCSPのインストール、設定、保守はすべてsslTrus SignTool CLIを通じて完了し、sslTrusクライアントリリースページからダウンロードできます。

KSP と CSP​

KSPとCSPは、それぞれWindowsの2世代の暗号化インターフェースに対応しています:

ProviderWindowsインターフェース適用シナリオ
KSPCNG(Cryptography API: Next Generation)最新のWindowsアプリケーションおよび署名ツールに推奨
CSPCryptoAPI従来のアプリケーション、またはCSPの使用が明示的に要求されるソフトウェア

新しいWindows統合シナリオでは、通常KSPを優先的に使用します。

対象ソフトウェアがKSPをサポートしない場合、または従来のCryptoAPI Providerの使用が明示的に要求される場合にのみ、CSPを使用します。

KSP​

KSPはWindows CNGベースのKey Storage Providerです。

sslTrus KSPをインストールすると、CNGをサポートするWindowsアプリケーションが、標準のWindows鍵インターフェースを通じてリモートコード署名サービスを呼び出せます。

ローカルProviderはアプリケーションから発行された署名要求を受け取り、署名が必要なダイジェストをリモートコード署名サービスに送信します。実際の秘密鍵操作はクラウドHSM上で完了します。

適用シナリオ​

KSPは以下に適用されます:

  • Microsoft SignTool。
  • Visual Studio。
  • MSBuild。
  • Windows CNGをサポートするビルドおよび署名ソフトウェア。
  • 標準Windows Providerを通じてリモート秘密鍵に接続する必要があるアプリケーション。

KSPのインストール​

管理者ターミナルで以下を実行します:

signtool ksp install

該コマンドは以下のものをインストールおよび登録します:

sslTrus Key Storage Provider

KSP のインストールにはシステム Provider の登録や Windows システムディレクトリの操作が伴うため、通常は管理者権限が必要です。

証明書設定の追加​

以下を実行します:

signtool ksp add

根据プロンプトを入力してください:

Access Key
Access Secret
Certificate Code

クライアントはリモートコード署名サービスから対応する証明書を取得し、リモートサービスアドレス、アクセス資格情報、証明書設定を保存します。

NICSRS(www.nicsrs.com)環境を使用する場合は、--address nicsrsを追加する必要があります。

signtool ksp add --address nicsrs

証明書の登録​

KSP の設定が完了したら、コード署名証明書を Windows 証明書ストアに登録し、KSP Provider に関連付ける必要があります。

実行手順:

signtool ksp register

デフォルトでは、現在のユーザーの個人証明書ストアに登録されます。

LocalMachine 証明書ストアに登録する必要がある場合:

signtool ksp register --store local-machine

注册完了后、Windows は対応する証明書を利用可能な秘密鍵を持つものとして認識しますが、実際の秘密鍵は引き続きクラウドHSMに保存されます。

Microsoft SignTool の使用​

KSP の構成が完了したら、Windows SDK に付属する Microsoft signtool.exe を使用してファイルに署名できます。

例:

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 ^
".\app.exe"

主要パラメータ:

パラメータ説明
/cspsslTrus KSP Providerを指定
/kc証明書番号に対応するキーコンテナを指定
/fコード署名証明書を指定
/fdファイルダイジェストアルゴリズムを指定
/trRFC 3161タイムスタンプサーバーを指定
/tdタイムスタンプダイジェストアルゴリズムを指定

既存の署名にSHA-1署名を追加する必要がある場合は、/as パラメータを使用できます:

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 ^
".\app.exe"

Microsoft signtool.exe は、Windows CNG を通じて sslTrus KSP を呼び出し、KSP がリモート秘密鍵による署名を実行します。

KSP の管理​

設定済みの KSP を確認するには:

signtool ksp list

削除設定:

signtool ksp del

証明書とKSPの関連付けを解除します:

signtool ksp deregister

KSPをアンインストールします:

signtool ksp uninstall

Provider をアンインストールする前に、他の Windows アプリケーションがその Provider に依存していないことを確認してください。

CSP​

CSP は、従来の Windows CryptoAPI が使用する Cryptographic Service Provider です。

主に、/csp と /kc パラメータで Provider とキーコンテナを指定する必要がある Windows 署名プロセスで使用されます。sslTrus CSP はクライアント側でインストールおよび保守が行われ、実際のファイル署名は引き続き Windows SDK の Microsoft signtool.exe によって実行されます。

適用シナリオ​

CSP は以下の場合に適用されます:

  • 従来の CryptoAPI のみをサポートする Windows ソフトウェア。
  • CSP Provider の明示的な指定を要求する署名ツール。
  • Microsoft SignTool の /csp および /kc パラメータを使用して署名を実行する必要がある環境。
  • Windows CNG / KSP を利用できない旧バージョンのアプリケーション。

KSP を正常に利用できる新しいシステムでは、通常は追加の CSP は不要です。

CSP のインストール​

管理者ターミナルで以下を実行します:

signtool csp install

インストール中に登録されます:

sslTrus Cryptographic Service Provider

また、Provider DLL を Windows システムにインストールします。

CSP Provider の種類は次のとおりです:

PROV_RSA_AES

ローカル設定はデフォルトで以下に保存されます:

%ProgramData%\sslTrusKSP

設定ファイルはWindows DPAPIを使用して保護されています。

KSPも同時にインストールする必要がある場合は、以下を実行できます:

signtool csp install --with-ksp

証明書設定の追加​

実行:

signtool csp add

根据提示、入力してください。

Access Key
Access Secret
Certificate Code

追加完了後、クライアントは対応する証明書をダウンロードし、次の場所に保存します:

%ProgramData%\sslTrusKSP\CERT_CODE.crt

其中 CERT_CODE は、リモート証明書識別子および後続の Microsoft SignTool で使用するキーコンテナ名として同時に機能します。

NICSRS(www.nicsrs.com)環境を使用する場合は、--address nicsrs を追加する必要があります。

signtool csp add --address nicsrs

証明書の登録​

既定では、証明書は現在のユーザーの個人証明書インベントリに登録されます。

signtool csp register

如果需要注册到 LocalMachine:

signtool csp register --store local-machine

対応する証明書ストアには以下が含まれます:

パラメータWindows証明書ストア
current-userCurrentUser\My
local-machineLocalMachine\My

登録完了後、Windows証明書マネージャーには対応する証明書に秘密キーが関連付けられていると表示されますが、秘密キーは実際にはクラウド上のHSMに保持されています。

Microsoft SignToolの使用​

CSP署名時には、Provider、キーコンテナ、および証明書ファイルを明示的に指定する必要があります:

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

主要参数:

参数说明
/cspsslTrus CSP Provider を指定
/kc証明書番号に対応するキーコンテナを指定
/fコード署名証明書を指定
/fdファイルダイジェストアルゴリズムを指定
/trRFC 3161 タイムスタンプサーバーを指定
/tdタイムスタンプダイジェストアルゴリズムを指定

現在のリモート署名インターフェースは SHA1 および SHA256 ダイジェストアルゴリズムをサポートしています。新規の署名シナリオでは SHA256 を優先して使用してください。SHA1 は旧システムとの互換性が必要な場合にのみ使用します。

署名の検証​

署名完了後、Microsoft SignTool を使用して検証できます:

signtool.exe verify /pa /v ".\app.exe"

署名の検証はリモート秘密鍵を再度呼び出さず、新しい署名回数も発生しません。

CSP の管理​

既存の設定を確認する:

signtool csp list

削除特定の証明書設定:

signtool csp del

証明書とCSPの秘密鍵との関連付けを解除します。

signtool csp deregister

プロバイダーのアンインストール:

signtool csp uninstall

CSP 構成の削除は、すでにダウンロード済みの証明書ファイルを自動的に削除しません。関連する証明書と構成がもはや使用されない場合は、他の Provider が依存していないことを確認してからクリーンアップを行う必要があります。

KSP と CSP​

特別な互換性要件がない場合は、以下の方法で選択できます:

シナリオ推奨
新しい Windows 署名環境KSP
Windows CNG をサポートKSP
Microsoft SignTool などの最新 Windows ツールKSP
ソフトウェアが明示的に CSP を要求CSP
従来の CryptoAPI アプリケーションCSP
ツールが /csp と /kc の使用を要求CSP

KSP と CSP の主な違いは、Windows が使用する暗号プロバイダーインターフェースが異なることであり、リモート秘密鍵のセキュリティモデルは同じです。

KSP または CSP のどちらを使用しても、コード署名秘密鍵はローカルクライアントに保存されません。

署名回数​

Windows Provider の署名回数は、基盤となる実際に完了したリモート署名アクションに基づいて計算されます。

例:

SHA256 签名一次 = 1 次

同一ファイルに対してSHA256署名を先に完了し、その後さらに別の署名を追加すると、リモート秘密鍵の操作が再度トリガーされるため、それぞれ個別に計算する必要があります。

KSPシナリオでは、同じファイルに対してSHA256とSHA1の二重署名を実行すると、通常、基盤となる署名呼び出しが2回発生します。

具体的なルールについては、参考資料を参照してください。

タイムスタンプ​

Windows Authenticode署名には、信頼できるタイムスタンプを追加することを通常推奨します。

現代のコード署名シナリオでは、RFC 3161タイムスタンプを優先的に使用することを推奨します。例:

http://timestamp.acs.microsoft.com

実際の本番環境では、対象のWindowsバージョン、証明書ポリシー、ネットワーク環境、およびタイムスタンプサービスの要件に応じて、適切なTSAを選択する必要があります。

具体的なタイムスタンプサーバーとプロトコルの説明については、参考资料 を参照してください。

セキュリティ上の注意事項​

Windows Providerを使用する際には、以下の点に注意してください。

  • Access Secretは機密性の高い認証情報として保護する必要があります。
  • アクセス認証情報を公開スクリプトやログに書き込まないでください。
  • Provider設定ファイルを公開して共有しないでください。
  • ローカルの証明書ファイルにはコード署名用の秘密鍵は含まれません。
  • コード署名用の秘密鍵は常にクラウド上のHSMに保管されます。
  • KSP/CSPによる署名開始時には、リモートのコード署名サービスへのアクセスが必要です。
  • LocalMachine証明書ストアを使用する場合は、Windowsユーザーの権限と認証情報のアクセス範囲に特に注意してください。

CSPの config.dat は現在のWindowsユーザープロファイルのDPAPIで保護されており、証明書をLocalMachineに登録しても、この設定のDPAPI保護範囲は自動的には変更されません。