Nastavení podpisových integrací pro použití důvěryhodného podepisování
Důvěryhodné podepisování v současné době podporuje následující integrace podepisování:
- SignTool
- GitHub Actions
- Úlohy Azure DevOps
- PowerShell pro Authenticode
- Azure PowerShell (zásady CI řízení aplikací pro firmy)
- Důvěryhodná podpisová sada SDK
Neustále pracujeme na podpoře dalších integrací podepisování. Seznam podporovaných integrací aktualizujeme, když jsou k dispozici další integrace.
Tento článek vysvětluje, jak nastavit každou podporovanou integraci podepisování důvěryhodných podpisů.
Nastavení nástroje SignTool pro použití důvěryhodného podepisování
Tato část vysvětluje, jak nastavit Nástroj SignTool pro použití s důvěryhodným podepisováním.
Požadavky
K dokončení kroků v tomto článku potřebujete:
- Důvěryhodný podpisový účet, ověření identity a profil certifikátu.
- Přiřazení jednotlivých nebo skupin role podepisujícího profilu důvěryhodného podpisového certifikátu
- Windows 10 verze 1809/říjen 2018 Update nebo novější, Windows 11 (všechny verze) nebo Windows Server 2016 nebo novější
Instalační program důvěryhodných podpisových klientských nástrojů
Důvěryhodné podpisové klientské nástroje pro SignTool.exe je modul plug-in knihovny, který vyžaduje následující komponenty:
- Windows SDK SignTool.exe (minimální verze: 10.0.2261.755)
- Modul runtime .NET 8
- Microsoft Visual C++ Redistributable
- Dlib důvěryhodného podpisového klienta
Pro zjednodušení tohoto nastavení existuje instalační balíček MSI, který je k dispozici ke stažení spolu s Setup.exe.
Instalace z Správce balíčků systému Windows
Instalační program důvěryhodných podpisových klientských nástrojů je k dispozici na Správce balíčků systému Windows (WinGet).
Poznámka:
Winget je ve výchozím nastavení k dispozici ve Windows 11 a moderních verzích Windows 10. Nemusí se ale instalovat ve starších verzích Windows. Pokyny k instalaci najdete v dokumentaci k sadě winget.
winget install -e --id Microsoft.Azure.TrustedSigningClientTools
Možnost -e
je zajistit, aby byl nainstalován oficiální balíček důvěryhodných podpisových klientských nástrojů. Tento příkaz ve výchozím nastavení nainstaluje nejnovější verzi. Pokud chcete zadat verzi, přidejte -v <version>
do příkazu požadovanou verzi.
Instalace z PowerShellu
Pokud chcete nainstalovat důvěryhodné podpisové klientské nástroje pomocí PowerShellu, spusťte PowerShell jako správce a spusťte následující příkaz:
$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
Shrnutí kroků ručního nastavení
- Stáhněte a nainstalujte SignTool.
- Stáhněte a nainstalujte modul runtime .NET 8.
- Stáhněte a nainstalujte balíček důvěryhodné podpisové knihovny dlib.
- Vytvořte soubor JSON, který poskytne váš důvěryhodný podpisový účet a profil certifikátu.
- Pokud chcete podepsat soubor, vyvoláte SignTool.
Stažení a instalace Nástroje SignTool
Důvěryhodné podepisování vyžaduje použití nástroje SignTool k podepisování souborů ve Windows, konkrétně verze SignTool.exe, která je v sadě Windows 10 SDK 10.0.2261.755 nebo novější. Úplnou sadu Windows 10 SDK můžete nainstalovat prostřednictvím Instalační program pro Visual Studio nebo si ji stáhnout a nainstalovat samostatně.
Stažení a instalace nástroje SignTool:
Stáhněte si nejnovější verzi NuGet nástrojů SignTool a Windows Build Tools na webu Microsoft.Windows.SDK.BuildTools.
Nainstalujte SignTool ze sady Windows SDK (minimální verze: 10.0.2261.755, verze sady Windows SDK 20348 není v našem souboru dlib podporovaná).
Další možností je použít nejnovější soubor nuget.exe ke stažení a extrahování nejnovějšího balíčku NuGet sady Windows SDK Build Tools pomocí PowerShellu:
Stáhněte nuget.exe spuštěním následujícího příkazu ke stažení:
Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe
Stáhněte a extrahujte balíček NuGet nástrojů sestavení sady Windows SDK spuštěním následujícího instalačního příkazu:
.\nuget.exe install Microsoft.Windows.SDK.BuildTools -Version 10.0.22621.3233 -x
Stažení a instalace modulu runtime .NET 8.0
Komponenty, které SignTool používá pro rozhraní s důvěryhodným podepisováním, vyžadují instalaci modulu runtime .NET 8.0. Potřebujete pouze základní modul runtime .NET 8.0. Ujistěte se, že nainstalujete správný modul runtime platformy v závislosti na verzi nástroje SignTool, kterou chcete spustit. Nebo můžete jednoduše nainstalovat obojí.
Příklad:
- Pro platformu x64 SignTool.exe: Stáhnout .NET 8.0 Runtime – Instalační program systému Windows x64
- Pro platformu x86 SignTool.exe: Stáhnout modul runtime .NET 8.0 – Instalační program systému Windows x86
Stažení a instalace balíčku důvěryhodné podpisové knihovny dlib
Stažení a instalace balíčku důvěryhodné podpisové knihovny dlib (soubor .zip):
Extrahujte zipovaný obsah důvěryhodného podpisového souboru dlib a nainstalujte ho do podpisového uzlu ve zvoleném adresáři. Uzel musí být uzlem, na kterém podepisujete soubory pomocí nástroje SignTool.
Další možností je stáhnout balíček důvěryhodné podpisové knihovny dlib přes NuGet podobný balíčku NuGet sady Windows SDK Build Tools:
.\nuget.exe install Microsoft.Trusted.Signing.Client -Version 1.0.53 -x
Vytvoření souboru JSON
Pokud se chcete podepsat pomocí důvěryhodného podepisování, musíte zadat podrobnosti o vašem důvěryhodném podpisovém účtu a profilu certifikátu vytvořeném v rámci požadavků. Tyto informace o souboru JSON zadáte provedením následujících kroků:
Vytvořte nový soubor JSON (například metadata.json).
Přidejte do souboru JSON konkrétní hodnoty pro váš důvěryhodný podpisový účet a profil certifikátu. Další informace najdete v souboru metadata.sample.json , který je součástí balíčku důvěryhodného podepisování dlib, nebo použijte následující příklad:
{ "Endpoint": "<Trusted Signing account endpoint>", "CodeSigningAccountName": "<Trusted Signing account name>", "CertificateProfileName": "<Certificate profile name>", "CorrelationId": "<Optional CorrelationId value>" }
Hodnota
"Endpoint"
identifikátoru URI musí být identifikátor URI, který odpovídá oblasti, ve které jste vytvořili profil důvěryhodného podpisového účtu a certifikátu při nastavování těchto prostředků. Tabulka zobrazuje oblasti a jejich odpovídající identifikátory URI.Oblast Pole třídy oblasti Hodnota identifikátoru URI koncového bodu USA – východ EastUS https://eus.codesigning.azure.net
USA – západ 3 [1] WestUS3 https://wus3.codesigning.azure.net
Středozápad USA WestCentralUS https://wcus.codesigning.azure.net
Západní USA 2 WestUS2 https://wus2.codesigning.azure.net
Severní Evropa Severní Evropa https://neu.codesigning.azure.net
Západní Evropa WestEurope https://weu.codesigning.azure.net
1 Volitelné
"CorrelationId"
pole je neprůzná řetězcová hodnota, kterou můžete poskytnout ke korelaci požadavků na podepsání s vlastními pracovními postupy, jako jsou identifikátory sestavení nebo názvy počítačů.
Ověřování
Tato úloha provádí ověřování pomocí DefaultAzureCredential, která se pokouší provést řadu metod ověřování v pořadí. Pokud jedna metoda selže, pokusí se o další metodu, dokud nebude ověření úspěšné.
Jednotlivé metody ověřování je možné zakázat jednotlivě, aby se zabránilo zbytečným pokusům.
Například při ověřování pomocí EnvironmentCredential zakažte ostatní přihlašovací údaje s následujícími vstupy:
ExcludeEnvironmentCredential: false ExcludeManagedIdentityCredential: true ExcludeSharedTokenCacheCredential: true ExcludeVisualStudioCredential: true ExcludeVisualStudioCodeCredential: true ExcludeAzureCliCredential: true ExcludeAzurePowershellCredential: true ExcludeInteractiveBrowserCredential: true
Podobně pokud používáme například AzureCliCredential , chceme přeskočit pokus o ověření pomocí několika metod, které jsou před ním v pořadí.
Podepsání souboru pomocí Nástroje SignTool
Vyvolání nástroje SignTool pro podepsání souboru:
Poznamenejte si, kde se nacházejí nástroje sestavení sady SDK, extrahované soubory Azure.CodeSigning.Dlib a metadata.json soubor (z předchozích částí).
Zástupné symboly v následující cestě nahraďte konkrétními hodnotami, které jste si poznamenali v kroku 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>
- Součástí sady Windows SDK je verze x86 i x64 SignTool. Nezapomeňte odkazovat na odpovídající verzi Azure.CodeSigning.Dlib.dll. Předchozí příklad je pro verzi x64 SignTool.
- Ujistěte se, že v závislostech uvedených na začátku tohoto článku používáte doporučenou verzi sady Windows SDK nebo soubor dlib nebude fungovat.
Důvěryhodné podpisové certifikáty mají třídenní platnost, takže časové razítko je důležité pro pokračování úspěšného ověření podpisu nad rámec této třídenní doby platnosti. Důvěryhodné podepisování doporučuje používat autoritu microsoftu Microsoft Public RSA Time Stamping Authority důvěryhodného podepisování: http://timestamp.acs.microsoft.com/
.
Použití dalších integrací podepisování s důvěryhodným podepisováním
K nastavení podpisových integrací s důvěryhodným podpisem můžete použít také následující nástroje nebo platformy.
GitHub Actions: Informace o použití akce GitHubu pro důvěryhodné podepisování najdete v tématu Důvěryhodné podepisování – Akce na GitHub Marketplace. Dokončete pokyny k nastavení a použití akce GitHubu.
Úloha Azure DevOps: Pokud chcete použít úlohu Důvěryhodné podepisování Azure DevOps, přečtěte si téma Důvěryhodné podepisování v sadě Visual Studio Marketplace. Dokončete pokyny k nastavení.
PowerShell pro Authenticode: Pokud chcete použít PowerShell pro důvěryhodné podepisování, přečtěte si téma Důvěryhodné přihlašování Galerie prostředí PowerShell pro instalaci modulu PowerShell.
Azure PowerShell – Řízení aplikací pro firmy: Pokud chcete použít podepisování zásad integrity kódu (CI), postupujte podle pokynů v tématu Podepsání nové zásady CI a projděte si modul PowerShellu Az.CodeSigning.
Důvěryhodná podpisová sada SDK: K vytvoření vlastní integrace podepisování můžete použít naši opensourcovou důvěryhodnou podpisovou sadu SDK.
Azure.Developer.TrustedSigning.CryptoProvider: Zjednodušuje integraci služby s poskytovatelem kryptografických služeb .NET, který abstrahuje integraci koncového bodu služby od příjemce.