信頼された署名を使用するように署名統合を設定する
信頼済み署名は、現在、次の署名統合に対応しています。
- SignTool
- GitHub のアクション
- Azure DevOps タスク
- Authenticode 用 PowerShell
- Azure PowerShell (ビジネス CI ポリシーのアプリ制御)
- Trusted Signing SDK
より多くの署名統合をサポートするための作業が継続的に行われています。 利用できる統合が増えたら、サポートされる統合の一覧を更新します。
この記事では、信頼された署名のサポートされる各署名統合を設定する方法について説明します。
信頼された署名を使うように SignTool を設定する
このセクションでは、信頼済み署名で使用するように SignTool を設定する方法について説明します。
前提条件
この記事の手順を完了するには、次のものが必要です。
- 信頼済み署名アカウント、ID 検証、証明書プロファイル。
- 信頼された署名証明書プロファイル署名者ロールの個人またはグループの割り当て。
手順の概要
- SignTool をダウンロードしてインストールします。
- .NET 8 ランタイムをダウンロードしてインストールします。
- 信頼された署名の dlib パッケージをダウンロードしてインストールします。
- 信頼された署名アカウントと証明書プロファイルを提供する JSON ファイルを作成します。
- ファイルに署名するために、SignTool を呼び出します。
SignTool をダウンロードしてインストールする
信頼された署名では、Windows 上のファイルへの署名に SignTool を使う必要があります (具体的には Windows 10 SDK 10.0.2261.755 以降に含まれる SignTool.exe のバージョン)。 Visual Studio インストーラーを使用して Windows 10 SDK 全体をインストールすることも、それを別個にダウンロードしてインストールすることもできます。
SignTool をダウンロードしてインストールするには、次のようにします。
Microsoft.Windows.SDK.BuildTools で、最新バージョンの SignTool と Windows ビルド ツール NuGet をダウンロードします。
Windows SDK から SignTool をインストールします (最小バージョン: 10.0.2261.755、20348 Windows SDK バージョンは dlib ではサポートされていません)。
もう 1 つのオプションは、PowerShell を使い、最新の nuget.exe ファイルを使って最新の Windows SDK ビルド ツール NuGet パッケージをダウンロードして抽出することです。
次のダウンロード コマンドを実行して、nuget.exe をダウンロードします。
Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe
次のインストール コマンドを実行して、Windows SDK ビルド ツール NuGet パッケージをダウンロードして抽出します。
.\nuget.exe install Microsoft.Windows.SDK.BuildTools -Version 10.0.22621.3233 -x
.NET 8.0 ランタイムをダウンロードしてインストールする
信頼された署名とのインターフェイスとして SignTool で使われるコンポーネントには、.NET 8.0 ランタイムのインストールが必要です。必要なのは、コア .NET 8.0 ランタイムのみです。 実行する SignTool のバージョンに応じて、適切なプラットフォーム ランタイムをインストールします。 または、単に両方をインストールしてもかまいません
次に例を示します。
- x64 SignTool.exe の場合: .NET 8.0 ランタイム - Windows x64 インストーラーをダウンロードします
- x86 SignTool.exe の場合: .NET 8.0 ランタイム - Windows x86 インストーラーをダウンロードします
信頼された署名の dlib パッケージをダウンロードしてインストールする
信頼された署名の dlib パッケージ (.zip ファイル) をダウンロードしてインストールするには:
信頼された署名の dlib パッケージをダウンロードします。
信頼された署名の dlib の ZIP された内容を抽出し、任意のディレクトリの署名ノードにインストールします。 このノードは、SignTool を使用してファイルに署名するノードである必要があります。
もう 1 つのオプションは、Windows SDK ビルド ツール NuGet パッケージと同様に、NuGet を使用して信頼された署名の dlib パッケージをダウンロードすることです。
.\nuget.exe install Microsoft.Trusted.Signing.Client -Version 1.0.53 -x
JSON ファイルを作成する
信頼された署名を使って署名するには、前提条件の一部として作成した、信頼された署名アカウントと証明書プロファイルの詳細を、指定する必要があります。 この情報は、次の手順を実行して JSON ファイル上に指定します。
新しい JSON ファイル (metadata.json など) を作成します。
信頼された署名アカウントと証明書プロファイルの具体的な値を JSON ファイルに追加します。 詳しくは、信頼された署名の dlib パッケージに含まれる metadata.sample.json ファイルを参照するか、次の例を使ってください。
{ "Endpoint": "<Trusted Signing account endpoint>", "CodeSigningAccountName": "<Trusted Signing account name>", "CertificateProfileName": "<Certificate profile name>", "CorrelationId": "<Optional CorrelationId value>" }
"Endpoint"
の URI 値は、これらのリソースの設定時に信頼された署名アカウントと証明書プロファイルを作成したリージョンと一致した URI である必要があります。 次に示す表は、リージョンとそれに対応する URI です。リージョン リージョン クラス フィールド エンドポイントの URI 値 米国東部 EastUS https://eus.codesigning.azure.net
米国西部 3 [1] WestUS3 https://wus3.codesigning.azure.net
米国中西部 WestCentralUS https://wcus.codesigning.azure.net
米国西部 2 WestUS2 https://wus2.codesigning.azure.net
北ヨーロッパ NorthEurope https://neu.codesigning.azure.net
西ヨーロッパ 西ヨーロッパ https://weu.codesigning.azure.net
1 省略可能な
"CorrelationId"
フィールドは、署名要求を独自のワークフローに関連付けるために指定できる非透過的な文字列値 (ビルド識別子やマシン名など) です。
認証
このタスクは、DefaultAzureCredential を使用して認証を実行します。一連の認証方法が順番に試行されます。 1 つの方法が失敗すると、認証が成功するまで次の方法が試行されます。
各認証方法を個別に無効にして、不要な試行を回避できます。
たとえば、特に EnvironmentCredential で認証する場合は、次の入力を使用して他の資格情報を無効にします。
ExcludeEnvironmentCredential: false ExcludeManagedIdentityCredential: true ExcludeSharedTokenCacheCredential: true ExcludeVisualStudioCredential: true ExcludeVisualStudioCodeCredential: true ExcludeAzureCliCredential: true ExcludeAzurePowershellCredential: true ExcludeInteractiveBrowserCredential: true
同様に、たとえば AzureCliCredential を使用する場合は、その順番の前にあるいくつかの方法による認証の試行をスキップします。
SignTool を使用してファイルに署名する
SignTool を呼び出してファイルに署名するには:
SDK ビルド ツール、抽出された Azure.CodeSigning.Dlib、metadata.json ファイルが置かれている場所 (前のセクションからのもの) を記録しておきます。
次のパスのプレースホルダーを、ステップ 1 で記録した特定の値に置き換えます。
& "<Path to SDK bin folder>\x64\signtool.exe" sign /v /debug /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /dlib "<Path to Trusted Signing dlib bin folder>\x64\Azure.CodeSigning.Dlib.dll" /dmdf "<Path to metadata file>\metadata.json" <File to sign>
- Windows SDK には、SignTool の x86 と x64 両方のバージョンが含まれます。 対応するバージョンの Azure.CodeSigning.Dlib.dll を参照してください。 前記の例は、x64 バージョンのSignTool の場合です。
- この記事の冒頭で示した依存関係で推奨されている Windows SDK バージョンを使っていることを確認してください。そうしないと、dlib ファイルが機能しません。
信頼された署名証明書の有効期間は 3 日間であるため、その 3 日間の有効期間が過ぎても引き続き署名が正常に検証されるには、タイムスタンプの設定が不可欠です。 信頼済み署名では、信頼済み署名の Microsoft パブリック RSA タイム スタンプ局 (http://timestamp.acs.microsoft.com/
) を使用することをお勧めします。
信頼済み署名を使用する他の署名統合を使用する
次のツールまたはプラットフォームを使って、信頼された署名との署名統合を設定することもできます。
GitHub Actions: 信頼された署名に GitHub アクションを使う方法については、GitHub Marketplace の信頼された署名 - Actions に関するページを参照してください。 GitHub アクションを設定して使用する手順を完了します。
Azure DevOps タスク: 信頼された署名の Azure DevOps タスクを使うには、Visual Studio Marketplace の Trusted Signing を参照してください。 セットアップの手順を完了します。
Authenticode 用 PowerShell: 信頼された署名に PowerShell を使用するには、PowerShell ギャラリーの「TrustedSigning」を参照して、PowerShell モジュールをインストールします。
Azure PowerShell - ビジネス向けアプリ コントロール CI ポリシー: コード整合性 (CI) ポリシーの署名に信頼された署名を使うには、新しい CI ポリシーの署名に関する記事の手順に従い、Az.CodeSigning PowerShell モジュールを参照してください。
Trusted Signing SDK: 独自の署名統合を作成するには、オープンソースの Trusted Signing SDK を使用できます。 この SDK バージョンは一覧に含まれていないものとして表示されることに注意してください。 これは引き続きサポートされており、新しい SDK がリリースされるときにサポートされます。