クライアントツール
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 Secret、またはその他の安全な資格情報管理方法で提供することを優先してください。
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でインストールされている場合は、2つの更新方法を混在させず、引き続きHomebrewでバージョン管理することをお勧めします。
macOS Homebrew
macOSユーザーは、sslTrus公式Homebrew TapからSignTool CLIまたはデスクトップクライアントをインストールできます。
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 に対応しており、ビルドプロセス内で指定ファイルに対して直接リモートコード署名を実行できます。
完全な設定については 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 を使用できます。