設定簽署整合以使用信任簽署
信任簽署目前支援下列簽署整合:
- SignTool
- GitHub 動作
- Azure DevOps 工作
- 適用於 Authenticode 的 PowerShell
- Azure PowerShell (商務用應用程式控制 CI 原則)
- 信任簽署 SDK
我們不斷努力支援更多簽署整合。 有更多整合可用時,我們會更新支援的整合清單。
本文說明如何設定每個支援的信任簽署簽署整合。
設定 SignTool 以使用信任簽署
本節說明如何設定 SignTool 以搭配信任簽署使用。
必要條件
若要完成本文的步驟,您需要:
- 信任簽署帳戶、身分識別驗證和憑證設定檔。
- 信任簽署憑證設定檔簽署者角色的個人或群組指派。
- Windows 10 版本 1809/2018 年 10 月更新或更新版本、Windows 11(所有版本),或 Windows Server 2016 或更新版本
信任簽署用戶端工具安裝程式
信任的簽署用戶端工具SignTool.exe是需要下列元件的連結庫外掛程式:
- Windows SDK SignTool.exe (最低版本:10.0.2261.755)
- .NET 8 運行時間
- Microsoft Visual C++ 可轉散發套件
- 信任的簽署用戶端 Dlib
為了簡化此設定,有一個 MSI 安裝程式套件可供下載,以及Setup.exe。
從 Windows 封裝管理員 安裝
信任簽署用戶端工具安裝程式可在 Windows 封裝管理員 (WinGet) 上取得。
注意
winget 預設可在 Windows 11 和新式版本的 Windows 10 中使用。 不過,它可能不會安裝在舊版 Windows 中。 如需安裝指示, 請參閱 winget 檔 。
winget install -e --id Microsoft.Azure.TrustedSigningClientTools
此選項 -e
是確保已安裝官方信任簽署用戶端工具套件。 此命令預設會安裝最新版本。 若要指定版本,請將具有所需版本的 新增 -v <version>
至 命令。
從 PowerShell 安裝
若要使用 PowerShell 安裝受信任的簽署用戶端工具,請以系統管理員身分啟動 PowerShell,然後執行下列命令:
$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri "https://download.microsoft.com/download/6d9cb638-4d5f-438d-9f21-23f0f4405944/TrustedSigningClientTools.msi" -OutFile .\TrustedSigningClientTools.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I TrustedSigningClientTools.msi /quiet'; Remove-Item .\TrustedSigningClientTools.msi
手動安裝步驟的摘要
- 下載並安裝 SignTool。
- 下載並安裝 .NET 8 Runtime。
- 下載並安裝信任簽署 dlib 套件。
- 建立 JSON 檔案,以提供您的信任簽署帳戶和憑證設定檔。
- 若要簽署檔案,請叫用 SignTool。
下載並安裝 SignTool
信任簽署需要使用 SignTool 在 Windows 上簽署檔案,特別是 Windows 10 SDK 10.0.2261.755 或更新版本中的 SignTool.exe 版本。 您可透過 Visual Studio 安裝程式安裝完整的 Windows 10 SDK,或個別下載並安裝。
若要下載並安裝 SignTool:
在 Microsoft.Windows.SDK.BuildTools 下載最新版本的 SignTool 和 Windows Build Tools NuGet。
從 Windows SDK 安裝 SignTool (最低版本:10.0.2261.755,我們的 dlib 不支援 20348 Windows SDK 版本)。
另一個選項是使用最新的 nuget.exe 檔案,使用 PowerShell 下載並擷取最新的 Windows SDK Build Tools NuGet 套件:
執行下列下載命令以下載 nuget.exe:
Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe
執行下列安裝命令,以下載並擷取 Windows SDK Build Tools NuGet 套件:
.\nuget.exe install Microsoft.Windows.SDK.BuildTools -Version 10.0.22621.3233 -x
下載並安裝 .NET 8.0 Runtime
SignTool 用來與信任簽署互動的元件需要安裝 .NET 8.0 Runtime 您只需要核心 .NET 8.0 Runtime。 確定您根據想要執行的 SignTool 版本來安裝正確的平台執行階段。 或者,您可直接安裝兩者
例如:
- 針對 x64 SignTool.exe:下載 .NET 8.0 Runtime - Windows x64 安裝程式
- 針對 x86 SignTool.exe:下載 .NET 8.0 Runtime - Windows x86 安裝程式
下載並安裝信任簽署 dlib 套件
若要下載並安裝信任簽署 dlib 套件 (.zip 檔案):
下載信任簽署 dlib 套件。
擷取信任簽署 dlib 壓縮內容,並將其安裝在您所選目錄中的簽署節點上。 此節點必須是您使用 SignTool 來簽署檔案的節點。
另一個選項是透過 NuGet 下載信任簽署 dlib 套件,這類似於 Windows SDK Build Tools NuGet 套件:
.\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
West US3 [1] WestUS3 https://wus3.codesigning.azure.net
美國中西部 WestCentralUS https://wcus.codesigning.azure.net
美國西部 2 WestUS2 https://wus2.codesigning.azure.net
北歐 北歐 https://neu.codesigning.azure.net
西歐 西歐 https://weu.codesigning.azure.net
1 選用
"CorrelationId"
欄位是不透明的字串值,您可提供此值以將簽署要求與您自己的工作流程相互關聯,例如組建識別碼或機器名稱。
驗證
此工作會使用 DefaultAzureCredential 來執行驗證,這會依序嘗試一系列驗證方法。 如果某個方法失敗,它會嘗試下一個方法,直到驗證成功為止。
您可以個別停用每個驗證方法,以避免不必要的嘗試。
例如,特別使用 EnvironmentCredential 進行驗證時,請使用下列輸入停用其他認證:
ExcludeEnvironmentCredential: false ExcludeManagedIdentityCredential: true ExcludeSharedTokenCacheCredential: true ExcludeVisualStudioCredential: true ExcludeVisualStudioCodeCredential: true ExcludeAzureCliCredential: true ExcludeAzurePowershellCredential: true ExcludeInteractiveBrowserCredential: true
同樣地,如果使用例如 AzureCliCredential,則我們想要略過嘗試按順序使用前面的幾種方法進行驗證。
使用 SignTool 來簽署檔案
若要叫用 SignTool 以簽署檔案:
記下您的 SDK Build Tools、擷取的 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 包含 x86 和 x64 版的 SignTool。 務必參考對應的 Azure.CodeSigning.Dlib.dll 版本。 上述範例適用於 x64 版的 SignTool。
- 確定您在本文開頭所列的相依性中使用建議的 Windows SDK 版本,否則 dlib 檔案將無法運作。
信任簽署憑證具有三天的有效期,因此時間戳記對於持續成功驗證超過該三天有效期限的簽章至關重要。 信任簽署建議使用信任簽署的 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 - 商務用應用程式控制 CI 原則:若要使用信任簽署進行程式碼完整性 (CI) 原則簽署,請遵循簽署新的 CI 原則中的指示,並參閱 Az.CodeSigning PowerShell 模組。
信任簽署 SDK:若要建立自己的簽署整合,您可使用我們的開放原始碼信任簽署 SDK。
Azure.Developer.TrustedSigning.CryptoProvider:簡化服務與 .NET 密碼編譯提供者的整合,以從取用者擷取服務端點整合。