成果物署名では現在、次の署名統合がサポートされています。
- 署名ツール
- GitHub Actions
- Azure DevOps タスク
- Authenticode 用 PowerShell
- Azure PowerShell (ビジネス CI ポリシーのアプリ制御)
- アーティファクト署名 SDK
より多くの署名統合をサポートするための作業が継続的に行われています。 利用できる統合が増えたら、サポートされる統合の一覧を更新します。
この記事では、サポートされているアーティファクト署名統合を設定する方法を説明します。
アーティファクト署名を使用するように SignTool を設定する
このセクションでは、アーティファクト署名で使用する SignTool を設定する方法について説明します。
[前提条件]
この記事の手順を完了するには、次のものが必要です。
- アーティファクト署名アカウント、ID 検証、および証明書プロファイル。
- アーティファクト署名証明書プロファイル署名者の役割を個別またはグループで割り当てる。
- Windows 10 バージョン 1809/October 2018 Update 以降、Windows 11 (すべてのバージョン)、または Windows Server 2016 以降
アーティファクト署名クライアント ツール インストーラー
SignTool.exe の成果物署名クライアント ツールは、次のコンポーネントを必要とするライブラリ プラグインです。
- Windows SDK SignTool.exe (最小バージョン: 10.0.2261.755)
- .NET 8 ランタイム
- Microsoft Visual C++ 再頒布可能パッケージ
- アーティファクト署名クライアント Dlib
このセットアップを簡略化するために、Setup.exeと共にダウンロードできる MSI インストーラー パッケージがあります。
Windows パッケージ マネージャーからのインストール
Artifact Signing Client Tools インストーラーは、Windows パッケージ マネージャー (WinGet) で使用できます。
注
winget は、Windows 11と最近のバージョンの Windows 10 では既定で使用できます。 ただし、古いバージョンの Windows にはインストールされていない可能性があります。 インストール手順については、winget のドキュメントを参照してください。
winget install -e --id Microsoft.Azure.ArtifactSigningClientTools
-eオプションは、公式の成果物署名クライアント ツール パッケージがインストールされていることを確認することです。 このコマンドは、既定で最新バージョンがインストールされます。 バージョンを指定するには、目的のバージョンを設定した -v <version> をコマンドに追加します。
PowerShell からのインストール
PowerShell を使用してアーティファクト署名クライアント ツールをインストールするには、 管理者として PowerShell を起動し、次のコマンドを実行します。
$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri "https://download.microsoft.com/download/70ad2c3b-761f-4aa9-a9de-e7405aa2b4c1/ArtifactSigningClientTools.msi" -OutFile .\ArtifactSigningClientTools.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I ArtifactSigningClientTools.msi /quiet'; Remove-Item .\ArtifactSigningClientTools.msi
手動セットアップ手順の概要
- 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 -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 圧縮コンテンツを抽出し、選択したディレクトリの署名ノードにインストールします。 このノードは、SignTool を使用してファイルに署名するノードである必要があります。
もう 1 つのオプションは、Windows SDK ビルド ツール NuGet パッケージと同様に、NuGet 経由で 成果物署名 dlib パッケージをダウンロードすることです。
.\nuget.exe install Microsoft.ArtifactSigning.Client -x
注
必要なリソースの最新バージョンを使用することをお勧めします。
JSON ファイルを作成する
アーティファクト署名を使用して署名するには、前提条件の一部として作成されたアーティファクト署名アカウントと証明書プロファイルの詳細を指定する必要があります。 この情報は、次の手順を実行して JSON ファイル上に指定します。
新しい JSON ファイル (metadata.json など) を作成します。
アーティファクト署名アカウントと証明書プロファイルの特定の値を JSON ファイルに追加します。 詳細については、成果物署名 dlib パッケージに含まれている metadata.sample.json ファイルを参照するか、次の例を使用します。
{ "Endpoint": "<Artifact Signing account endpoint>", "CodeSigningAccountName": "<Artifact Signing account name>", "CertificateProfileName": "<Certificate profile name>", "CorrelationId": "<Optional CorrelationId value>" }
1 省略可能な "CorrelationId" フィールドは、署名要求を独自のワークフローに関連付けるために指定できる非透過的な文字列値 (ビルド識別子やマシン名など) です。
Important
"Endpoint" URI 値は、アーティファクト署名アカウントと証明書プロファイルを作成したリージョンと一致する必要があります。 次の表に示すリージョン固有の URI のいずれかを使用します。 一般的に、リージョン/エンドポイントの不一致により、403 Forbidden エラーが発生し、署名中に内部 SignerSign() エラーが発生します。
| リージョン | リージョンクラスのフィールド | エンドポイントの URI 値 |
|---|---|---|
| ブラジル南部 | ブラジル南部 | https://brs.codesigning.azure.net |
| 米国中部 | セントラルUS | https://cus.codesigning.azure.net |
| 米国東部 | イーストUS | https://eus.codesigning.azure.net |
| 東日本 | JapanEast | https://jpe.codesigning.azure.net |
| 韓国中部 | KoreaCentral | https://krc.codesigning.azure.net |
| 米国中北部 | NorthCentralUS | https://ncus.codesigning.azure.net |
| 北ヨーロッパ | NorthEurope | https://neu.codesigning.azure.net |
| ポーランド中部 | ポーランドセントラル | https://plc.codesigning.azure.net |
| 米国中南部 | SouthCentralUS | https://scus.codesigning.azure.net |
| スイス北部 | スイス北部 | https://swn.codesigning.azure.net |
| 米国中西部 | WestCentralUS | https://wcus.codesigning.azure.net |
| 西ヨーロッパ | 西ヨーロッパ | https://weu.codesigning.azure.net |
| 米国西部 | WestUS | https://wus.codesigning.azure.net |
| 米国西部 2 | WestUS2 | https://wus2.codesigning.azure.net |
| 米国西部 3 | WestUS3 | https://wus3.codesigning.azure.net |
Authentication
このタスクは、DefaultAzureCredential を使用して認証を実行します。一連の認証方法が順番に試行されます。 1 つの方法が失敗すると、認証が成功するまで次の方法が試行されます。
各認証方法を個別に無効にして、不要な試行を回避できます。
たとえば、特に EnvironmentCredential で認証する場合は、次の入力を使用して他の資格情報を無効にします。
{
"Endpoint": "<Artifact Signing account endpoint>",
"CodeSigningAccountName": "<Signing account name>",
"CertificateProfileName": "<Certificate profile name>",
"CorrelationId": "<Optional CorrelationId value>",
"ExcludeCredentials": [
"ManagedIdentityCredential",
"WorkloadIdentityCredential",
"SharedTokenCacheCredential",
"VisualStudioCredential",
"VisualStudioCodeCredential",
"AzureCliCredential",
"AzurePowerShellCredential",
"AzureDeveloperCliCredential",
"InteractiveBrowserCredential"
]
}
同様に、たとえば 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 Artifact 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 のアクション」を参照してください。 GitHub アクションを設定して使用する手順を完了します。
Azure DevOps タスク: アーティファクト署名 Azure DevOps タスクを使用するには、「Visual Studio Marketplace での 成果物の署名 」を参照してください。 セットアップの手順を完了します。
Authenticode 用 PowerShell: 成果物の署名に PowerShell を使用するには、「PowerShell ギャラリーでの 成果物の署名 」を参照して PowerShell モジュールをインストールします。
Azure PowerShell - App Control for Business CI ポリシー: コード整合性 (CI) ポリシー署名にアーティファクト署名を使用するには、新しい CI ポリシーに署名 の手順に従って Az.ArtifactSigning PowerShell モジュールを ダウンロードします。
アーティファクト署名 SDK: 独自の署名統合を作成するには、オープンソースの Artifact Signing SDK を使用できます。
Azure.Developer.ArtifactSigning.CryptoProvider: サービス エンドポイントの統合をコンシューマーから抽象化する .NET 暗号化プロバイダーとのサービスの統合を簡略化します。