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

クライアントツール

sslTrus はコマンドラインクライアントとデスクトップクライアントを提供し、リモートコード署名サービスに接続してファイル署名を完了します。

そのうち、SignTool CLI はコマンドライン、スクリプト、自動化のシナリオに適しています。macOS ユーザーも Homebrew を通じて SignTool CLI またはデスクトップクライアントをインストールおよび更新できます。

SignTool CLI

SignTool CLI は sslTrus が提供するリモートコード署名コマンドラインクライアントで、インストール後の実行可能ファイル名は signtool です。

主に以下の機能を提供します。

機能コマンド説明
ファイル署名signtool signローカルファイルに対してリモートコード署名を実行
署名枠signtool quota証明書の残り署名枠と総署名枠を照会
クライアント更新signtool update現在のプラットフォームの最新クライアントを照会してインストール
Windows KSPsigntool kspWindows Key Storage Provider のインストールと管理
Windows CSPsigntool cspWindows Cryptographic Service Provider のインストールと管理

KSP と CSP は Windows Provider 統合方式に属します。具体的な使用方法は Windows Provider をご覧ください。

クライアントのダウンロード

SignTool CLI は sslTrus クライアントリリースページからダウンロードできます。

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 quotasigntool 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 を使用できます。