クライアントツール
sslTrus は、リモートコード署名サービスに接続してファイル署名を完了するためのコマンドラインクライアントとデスクトップクライアントを提供します。
このうち、SignTool CLI はコマンドライン、スクリプト、自動化シナリオに適しています。macOS ユーザーは Homebrew を使用して SignTool CLI またはデスクトップクライアントをインストールおよび更新することもできます。
SignTool CLI
SignTool CLI は、sslTrus が提供するリモートコード署名のコマンドラインクライアントで、インストール後の実行可能ファイル名は signtool です。
主に以下の機能を提供します:
| 機能 | コマンド | 説明 |
|---|---|---|
| ファイル署名 | signtool sign | ローカルファイルに対してリモートコード署名を実行 |
| 署名枠 | signtool quota | 証明書の残りおよび総署名枠を照会 |
| クライアント更新 | signtool update | 現在のプラットフォームの最新クライアントを照会およびインストール |
| Windows KSP | signtool ksp | Windows Key Storage Provider のインストールと管理 |
| Windows CSP | signtool csp | Windows Cryptographic Service Provider のインストールと管理 |
KSP と CSP は Windows Provider 統合方式に属し、具体的な使用方法は Windows Provider を参照してください。
クライアントのダウンロード
SignTool CLI は sslTrus クライアント公開ページからダウンロードできます:
リリースページでは、各プラットフォームの最新クライアントインストールパッケージを提供しています。自動化シナリオでは、バージョンインデックス latest.json を通じて現在の最新バージョン情報を確認することもできます。
macOSユーザーはHomebrewを使って直接インストールすることもできます。詳細は以下の macOS Homebrew を参照してください。
クライアント情報の確認
インストール完了後、以下を実行できます:
signtool --help
查看コマンドのヘルプを表示します。
現在のクライアントバージョンを確認します:
signtool --version
バージョン情報には、クライアントバージョン、ビルドrevision、実行プラットフォーム、ビルド時間などの情報が含まれます。
アクセス認証情報
リモートコード署名サービスを利用する前に、以下を準備する必要があります:
- Access Key
- Access Secret
- 証明書番号(Cert Code)
このうち、Access KeyとAccess Secretはリモートコード署名サービスへのアクセスに使用され、証明書番号は実際に署名を実行するコード署名証明書を指定するために使用されます。
SignTool CLIは、コマンド引数で認証情報を提供することも、環境変数から読み取ることもできます。
export ACCESS_KEY="your-access-key"
export ACCESS_SECRET="your-access-secret"
Access Secret は、環境変数、CI/CD シークレット、またはその他の安全な認証情報管理方法を通じて提供することを推奨します。
Access Secret を以下の方法で扱わないでください:
- Git リポジトリにコミットする。
- 公開スクリプトに書き込む。
- ビルドログに出力する。
- 信頼できない第三者システムに送信する。
リモートサービスアドレス
デフォルトでは、SignTool CLI は sslTrus 本番サービスアドレスを使用するため、追加の設定は必要ありません。
NICSRS(www.nicsrs.com)環境を使用する場合は、コマンドに --address nicsrs を追加する必要があります。
signtool sign \
--address nicsrs \
--cert-code CERT_CODE \
--file app.exe
signtool quota および signtool update も --address nicsrs をサポートしています。
ファイル署名
signtool sign を使用すると、ローカルファイルに対して直接リモートコード署名を実行できます。
最も基本的な署名コマンドは次のとおりです。
signtool sign \
--cert-code CERT_CODE \
--file app.exe
如果已經設定:
ACCESS_KEY
ACCESS_SECRET
SignTool CLI は対応するアクセス資格情報を自動的に読み取ります。
デフォルトでは SHA-2 を使用して署名を実行します。
出力ファイルの指定
デフォルトでは、クライアントは元のファイルを直接上書きしません。
--out を使用して署名後の出力ファイルを指定できます:
signtool sign \
--cert-code CERT_CODE \
--file app-unsigned.exe \
--out app-signed.exe
元のファイルを上書き
元のファイルを直接変更する必要がある場合は、次を使用できます:
signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--override=true
--override を有効にすると、署名結果は直接入力ファイルに書き戻されます。
自動ビルド環境で使用する場合は、後続のステップで必要なのが元のファイルか署名済みのファイルかを確認してください。
プログラムの説明を指定
プログラムの説明と URL を Authenticode 署名に書き込むことができます。
signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--desc "Example Application" \
--url "https://example.com"
SHA-1 と SHA-2
デフォルトでSHA-2が有効になっています:
signtool sign \
--cert-code CERT_CODE \
--file app.exe
SHA-1のみを使用:
signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=false
同時に SHA-1 と SHA-2 を有効にする:
signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=true
SHA-1は主に旧システムとの互換性のために使用され、新規プロジェクトでは通常、SHA-2の使用が優先されるべきです。
タイムスタンプ
コード署名には、信頼できるタイムスタンプを同時に追加することが一般的に推奨されます。
SignTool CLI はデフォルトで署名に自動的にタイムスタンプサービスを設定します。パラメータでタイムスタンプサーバーを指定することもできます:
--timestamp-rfc3161:SHA-2署名に使用される RFC 3161 タイムスタンプサーバー。--timestamp:SHA-1署名に使用される Authenticode タイムスタンプサーバー。
RFC 3161 タイムスタンプサーバーを指定する場合:
signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161=http://timestamp.acs.microsoft.com
指定 Authenticode タイムスタンプサーバー:
signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp=http://timestamp.sectigo.com
タイムスタンプを無効にしたい場合は、パラメータ値を空に設定します。
signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161= \
--timestamp=
时间戳プロトコル、サーバーアドレス、および選択に関する推奨事項については、参考资料 を参照してください。
署名枠の照会
使用方法:
signtool quota
現在のアクセス認証情報で可視なコード署名証明書の残高を照会できます。
出力内容は次のとおりです。
- 証明書番号。
- 証明書情報。
- 残り署名回数。
- 総署名回数。
JSON形式の出力が必要な場合:
signtool quota --json
也可以使用簡略表記:
signtool quota -j
签名次数的具体的な計算方法は、CLI、KSP、Jarsigner、またはビルドツールの呼び出し方法によって異なる場合があります。詳細なルールについては、署名回数の計算説明を参照してください。
クライアントの更新
SignTool CLIは、現在のプラットフォームの最新バージョンの照会とインストールをサポートしています。
signtool update
更新プロセス中に、ダウンロードファイルのサイズとSHA-256が検証され、クライアントファイルの整合性が確認されます。
SignTool CLIがHomebrew経由でインストールされている場合は、引き続きHomebrewを通じてバージョンを管理することをお勧めします。両方の更新方法を同時に混用しないでください。
macOS Homebrew
macOSユーザーは、sslTrus公式Homebrew Tapを通じてSignTool CLIまたはデスクトップクライアントをインストールできます。
公開リポジトリ:ssltrus-official/homebrew-tap
Homebrew Tapのインストール
実行:
brew tap ssltrus-official/tap
brew trust ssltrus-official/tap
完了後、対応するクライアントをインストールできます。
SignTool CLI のインストール
以下を実行します:
brew install ssltrus-official/tap/code-sign-cli
安装完了したら、次を実行できます:
signtool --version
クライアントが正常にインストールされているか確認します。
Homebrew におけるパッケージ名は以下の通りです:
code-sign-cli
実際にインストールされるコマンドラインプログラムの名称は次のとおりです:
signtool
デスクトップクライアントのインストール
sslTrus コードサイニング用デスクトップクライアントをインストールします:
brew install --cask ssltrus-official/tap/code-sign-gui
対応する Homebrew Cask 名は以下のとおりです:
code-sign-gui
クライアントの更新
クライアントが Homebrew でインストールされている場合、Homebrew を使用したアップグレードを推奨します。
まず、Homebrew のパッケージ情報を更新します。
brew update
升级 SignTool CLI:
brew upgrade ssltrus-official/tap/code-sign-cli
デスクトップクライアントをアップグレードします:
brew upgrade --cask ssltrus-official/tap/code-sign-gui
これにより、ローカルインストール版とHomebrewパッケージのメタデータを一致させることができます。
Windows Provider
シナリオがSignTool CLIを直接呼び出すのではなく、Microsoft SignTool、Visual Studio、MSBuild、Advanced Installer、またはその他のWindowsソフトウェアがリモートのコード署名秘密鍵を直接使用する場合は、Windows Providerを使用する必要があります。
sslTrusが提供するもの:
- KSP(Key Storage Provider):Windows CNG向け。
- CSP(Cryptographic Service Provider):従来のWindows CryptoAPI向け。
Windows Providerを参照してください。
CI/CD自動署名
継続的インテグレーションまたは自動ビルドプロセスで署名を実行する必要がある場合、必ずしもSignTool CLIを手動でインストールして呼び出す必要はありません。
たとえば、GitHub ActionsはsslTrus Code Sign Actionを直接使用できます:
- name: Sign files
uses: ssltrus-official/code-sign-action@v1
with:
access-key: ${{ secrets.SSLTRUS_ACCESS_KEY }}
access-secret: ${{ secrets.SSLTRUS_ACCESS_SECRET }}
cert-code: ${{ secrets.SSLTRUS_CERT_CODE }}
files: build/app.exe
GitHub Action は Linux、macOS、および Windows Runner をサポートしており、ビルドプロセス内で指定されたファイルに対して直接リモートコード署名を実行できます。
公開リポジトリ:ssltrus-official/code-sign-action
完全な設定については CI/CD とビルドツール を参照してください。
選択方法
実際の使用状況に応じて、適切なクライアントまたは統合方法を選択できます。
| シナリオ | 推奨方法 |
|---|---|
| ターミナルでファイルを手動で署名する | SignTool CLI |
| スクリプトを使用したバッチ署名呼び出し | SignTool CLI |
| コード署名枠の照会 | SignTool CLI |
| macOS での CLI のインストールとアップデート | Homebrew |
| macOS でのデスクトップクライアントの使用 | Homebrew |
| Microsoft SignTool などの Windows ソフトウェアからリモート秘密鍵を直接呼び出す | KSP |
| 従来の CryptoAPI ソフトウェア | CSP |
| GitHub Actions による自動署名 | GitHub Actions |
| 自社開発の署名クライアント | リモートコード署名 API |
アプリケーションが Windows KSP、CSP、またはその他の標準 Provider をすでにサポートしている場合は、通常は対応する標準統合方式を優先して使用する必要があります。署名プロセスを直接制御する必要がある場合は、SignTool CLI またはリモートコード署名 API を使用できます。