Einrichten von Signatur-Integrationen zur Verwendung der Artefakt-Signierung

Die Artefaktsignierung unterstützt derzeit die folgenden Signaturintegrationen:

  • SignTool
  • GitHub-Aktionen
  • Azure DevOps-Aufgaben
  • PowerShell für Authenticode
  • Azure PowerShell (CI-Richtlinie für die App-Steuerung für Unternehmen)
  • Artefaktsignierungs-SDK

Wir arbeiten ständig daran, mehr Signaturintegrationen zu unterstützen. Wir aktualisieren die unterstützte Integrationsliste, sobald weitere Integrationen verfügbar sind.

In diesem Artikel wird erläutert, wie Sie jede unterstützte Artefaktsignierungsintegration konfigurieren.

SignTool für die Artefakt-Signierung einrichten

In diesem Abschnitt wird erläutert, wie Sie SignTool für die Verwendung mit Artefaktsignierung einrichten.

Voraussetzungen

Zur Durchführung der in diesem Artikel aufgeführten Schritte ist Folgendes erforderlich:

  • Ein Artefaktsignierungskonto, eine Identitätsüberprüfung und ein Zertifikatsprofil.
  • Einzel- oder Gruppenzuweisung der Rolle Artefaktsignierer des Zertifikatprofilsignierers.
  • Windows 10 Version 1809/Oktober 2018 Update oder neuer, Windows 11 (alle Versionen) oder Windows Server 2016 oder höher

Installer für Signaturtools des Artefakt-Clients

Artefakt-Signierungs-Client-Tools für SignTool.exe ist eine Bibliothekserweiterung, die die folgenden Komponenten erfordert:

  1. Windows SDK-SignTool.exe (Mindestversion: 10.0.2261.755)
  2. .NET 8-Runtime
  3. Microsoft Visual C++ Weiterverteilbare Bibliothek
  4. Der Artefaktsignierungsklient Dlib

Zur Vereinfachung dieses Setups gibt es ein MSI-Installationspaket, das zusammen mit einem Setup.exezum Download zur Verfügung steht.

Installieren aus dem Windows-Paket-Manager

Der Installer für die Clienttools zur Artefaktsignierung ist im Windows-Paket-Manager (WinGet) verfügbar.

Hinweis

winget ist standardmäßig in Windows 11 und modernen Versionen von Windows 10 verfügbar. Es kann jedoch möglicherweise nicht in älteren Versionen von Windows installiert werden. Informationen zur Installation finden Sie in der winget-Dokumentation.

winget install -e --id Microsoft.Azure.ArtifactSigningClientTools

Die -e Option besteht darin, sicherzustellen, dass das offizielle Artifact Signing Client Tools-Paket installiert ist. Dieser Befehl installiert standardmäßig die neueste Version. Fügen Sie zum Angeben einer Version -v <version> mit der gewünschten Version zum Befehl hinzu.

Installieren von PowerShell

Um die Artefaktsignierungsclienttools mit PowerShell zu installieren, starten Sie PowerShell als Administrator , und führen Sie den folgenden Befehl aus:

$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

Zusammenfassung der manuellen Einrichtungsschritte

  1. Herunterladen und Installieren von SignTool.
  2. Herunterladen und Installieren der .NET 8-Runtime.
  3. Laden Sie das Artefaktsignierungs-Dlib-Paket herunter, und installieren Sie es.
  4. Erstellen Sie eine JSON-Datei, um Ihr Artefaktsignierungskonto und ein Zertifikatprofil bereitzustellen.
  5. Rufen Sie SignTool auf, um eine Datei zu signieren.

Herunterladen und Installieren von SignTool

Die Artefaktsignierung erfordert die Verwendung von SignTool zum Signieren von Dateien unter Windows, insbesondere die Version von SignTool.exe, die sich im Windows 10 SDK 10.0.2261.755 oder höher befindet. Sie können das vollständige Windows 10 SDK über den Visual Studio-Installer installieren oder es separat herunterladen und installieren.

So laden Sie SignTool herunter und installieren SignTool

  1. Laden Sie die aktuelle Version von SignTool und Windows Build Tools NuGet hier herunter: Microsoft.Windows.SDK.BuildTools.

  2. Installieren Sie SignTool aus dem Windows SDK (Mindestversion: 10.0.2261.755. Die Windows SDK-Version 20348 wird mit dlib nicht unterstützt.)

Eine weitere Möglichkeit besteht darin, die neueste herunterladbare Version von nuget.exe zu verwenden und das neueste NuGet-Paket für Windows SDK-Buildtools zu extrahieren (mit PowerShell):

  1. Laden Sie nuget.exe herunter, indem Sie den folgenden Befehl zum Herunterladen ausführen:

    Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe  
    
  2. Laden Sie das zutreffende NuGet-Paket für Windows SDK Buildtools herunter und entpacken Sie es, indem Sie den folgenden Installationsbefehl ausführen:

    .\nuget.exe install Microsoft.Windows.SDK.BuildTools -x
    

Herunterladen und Installieren der .NET 8.0-Runtime

Für die Komponenten, die SignTool für die Schnittstelle mit der Artefaktsignierung verwendet, ist die Installation von .NET 8.0 Runtime erforderlich. Sie benötigen nur die .NET 8.0-Kernlaufzeit. Installieren Sie unbedingt die richtige Plattformruntime, je nachdem, welche Version von SignTool Sie ausführen möchten. Sie können auch einfach beide installieren.

Beispiel:

Herunterladen und Installieren des Artifact Signing dlib-Pakets

So laden Sie das Artefaktsignierungs-Dlib-Paket (eine .zip Datei) herunter und installieren sie:

  1. Laden Sie das Dlib-Paket für Artefaktsignierung herunter.

  2. Entpacken Sie den gezippten Inhalt der Artefaktsignatur-dlib und installieren Sie ihn auf Ihrem Signaturknoten in einem Verzeichnis Ihrer Wahl. Der Knoten muss der Knoten sein, auf dem Sie SignTool zum Signieren von Dateien verwenden.

Eine weitere Möglichkeit besteht darin, das Artifact Signing Dlib-Paket über NuGet herunterzuladen, ähnlich wie das Windows SDK Build Tools NuGet-Paket:

.\nuget.exe install Microsoft.ArtifactSigning.Client -x

Hinweis

Es wird empfohlen, die neueste Version einer der erforderlichen Ressourcen zu verwenden.

Erstellen einer JSON-Datei

Um die Artefaktsignierung zu verwenden, müssen Sie die Details Ihres Artefaktsignierungskontos und des Zertifikatprofils angeben, das als Teil der erforderlichen Voraussetzungen erstellt wurde. Sie geben diese Informationen in einer JSON-Datei an, indem Sie die folgenden Schritte ausführen:

  1. Erstellen Sie eine neue JSON-Datei (z. B. metadata.json).

  2. Fügen Sie der JSON-Datei die spezifischen Werte für Ihr Artefaktsignierungskonto und das Zertifikatprofil hinzu. Weitere Informationen finden Sie in der metadata.sample.json Datei, die im Paket "Artifact Signing dlib" enthalten ist, oder verwenden Sie das folgende Beispiel:

    {
      "Endpoint": "<Artifact Signing account endpoint>",
      "CodeSigningAccountName": "<Artifact Signing account name>",
      "CertificateProfileName": "<Certificate profile name>",
      "CorrelationId": "<Optional CorrelationId value>"
    }
    

1 Das optionale Feld "CorrelationId" ist ein nicht transparenter Zeichenfolgenwert, den Sie bereitstellen können, um Signieranforderungen mit Ihren eigenen Workflows zu korrelieren, z. B. Buildbezeichner oder Computernamen.

Von Bedeutung

Der "Endpoint" URI-Wert muss mit der Region übereinstimmen, in der Sie Ihr Artefaktsignierungskonto und das Zertifikatprofil erstellt haben. Verwenden Sie eine der regionsspezifischen URIs in der folgenden Tabelle. Eine Nichtübereinstimmung einer Region/eines Endpunkts verursacht normalerweise einen Fehler „403 Forbidden“ und einen internen SignerSign()-Fehler während der Signierung.

Region Regionsklassenfelder Endpunkt-URI-Wert
Brasilien Süd Brasilien,Süden https://brs.codesigning.azure.net
Central US Zentral-USA https://cus.codesigning.azure.net
East US Ost-USA https://eus.codesigning.azure.net
Japan, Osten JapanEast https://jpe.codesigning.azure.net
Korea Central KoreaCentral https://krc.codesigning.azure.net
Nord-Mittel-USA NorthCentralUS https://ncus.codesigning.azure.net
Nordeuropa Europa, Norden https://neu.codesigning.azure.net
Poland Central PolenCentral https://plc.codesigning.azure.net
Süd-Mittel-USA USA, Süden-Mitte https://scus.codesigning.azure.net
Switzerland North SchweizNorden https://swn.codesigning.azure.net
Zentraler Westen der USA WestCentralUS https://wcus.codesigning.azure.net
West Europe Europa, Westen https://weu.codesigning.azure.net
West US USA, Westen https://wus.codesigning.azure.net
Westliches USA 2 WestUS2 https://wus2.codesigning.azure.net
Westliches USA 3 WestUS3 https://wus3.codesigning.azure.net

Authentifizierung

Diese Aufgabe führt die Authentifizierung mit DefaultAzureCredential aus, die eine Reihe von Authentifizierungsmethoden versucht. Wenn eine Methode fehlschlägt, wird die nächste versucht, bis die Authentifizierung erfolgreich ist.

Jede Authentifizierungsmethode kann einzeln deaktiviert werden, um unnötige Versuche zu vermeiden.

Deaktivieren Sie beispielsweise bei der Authentifizierung mit EnvironmentCredential die anderen Anmeldeinformationen mit den folgenden Eingaben:

{
  "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"
 ]
}

Wenn Sie z. B. ein AzureCliCredential verwenden, können Sie auch den Versuch überspringen, sich mit den verschiedenen Methoden zu authentifizieren, die in der Folge vorhanden sind.

Verwenden von SignTool zum Signieren einer Datei

So rufen Sie SignTool auf, um eine Datei zu signieren

  1. Notieren Sie sich, wo sich Ihre SDK-Buildtools, das extrahierte Paket Azure.CodeSigning.Dlib und die Datei metadata.json befinden (siehe vorherige Abschnitte).

  2. Ersetzen Sie die Platzhalter im folgenden Pfad durch die spezifischen Werte, die Sie in Schritt 1 notiert haben:

    & "<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>
    
  • Sowohl die x86- als auch die x64-Version von SignTool sind im Windows SDK enthalten. Achten Sie darauf, auf die entsprechende Version von Azure.CodeSigning.Dlib.dll zu verweisen. Das obige Beispiel gilt für die x64-Version von SignTool.
  • Stellen Sie sicher, dass Sie die empfohlene Windows SDK-Version in den Abhängigkeiten verwenden, die am Anfang dieses Artikels aufgeführt sind. Andernfalls funktioniert die Dlib-Datei nicht.

Artefaktesignaturzertifikate haben eine dreitägige Gültigkeit, sodass zeitstempeln für die fortgesetzte erfolgreiche Überprüfung einer Signatur über diesen Drei-Tage-Gültigkeitszeitraum hinaus von entscheidender Bedeutung ist. Artifact Signing empfiehlt die Verwendung der von Artifact Signing bereitgestellten Microsoft Public RSA Time Stamping Authority: http://timestamp.acs.microsoft.com/.

Azure DevOps-Aufgaben für die Verwendung der Artefaktsignierung einrichten

Verwenden Sie die Azure DevOps-Aufgabe Artifact Signing, um Ihre Buildausgaben aus Azure Pipelines zu signieren. Die Aufgabe wird sowohl für Microsoft gehostete als auch für selbst gehostete Build-Agents ausgeführt. Nach dem Hinzufügen der Erweiterung zu Ihrer Azure DevOps Organisation ist keine Installation pro Agent erforderlich.

Von Bedeutung

Installieren Sie die Azure DevOps-Erweiterung für die Artefaktsignierung nur aus dem Visual Studio Marketplace in eine Azure DevOps-Organisation. Laden Sie .vsix nicht herunter, und führen Sie es nicht mit VSIXInstaller.exe auf einer Workstation oder einem selbst gehosteten Build-Agent aus – dieses Installationsprogramm ist für Visual-Studio-IDE-Erweiterungen vorgesehen und schlägt trotz gültiger Signatur mit der irreführenden Meldung InvalidSignature / NullReferenceException fehl. Zum Signieren ohne Verwendung von Azure Pipelines verwenden Sie stattdessen SignTool oder eine der anderen unterstützten Integrationen. Weitere Informationen finden Sie in den Häufig gestellten Fragen zur Artefaktsignierung.

Installieren der Erweiterung in Ihrer Azure DevOps Organisation

  1. Melden Sie sich bei Ihrer Azure DevOps Organisation mit einem Konto an, das über die Berechtigung Manage Extensions verfügt. Ausführliche Informationen finden Sie in der Azure DevOps dokumentation unter Install extensions.
  2. Öffnen Sie die Artifact Signing-Erweiterung auf dem Visual Studio Marketplace.
  3. Wählen Sie Get it free, dann Ihre Azure DevOps-Organisation aus, und wählen Sie Install.

Verwenden Sie die Aufgabe in einer Pipeline

Verweisen Sie auf die AzureArtifactSigning@<version> Aufgabe aus einer beliebigen Pipeline in der Organisation, in der Sie die Erweiterung installiert haben. Eine vollständige Referenz zu den Aufgabeneingaben, Parameterbeispiele und Informationen zur Einrichtung der Authentifizierung finden Sie unter Artifact Signing im Visual Studio Marketplace.

Verwenden anderer Signaturintegrationen mit Artefaktsignierung

Sie können auch die folgenden Tools oder Plattformen verwenden, um Signierungsintegrationen mit Artefaktsignierung einzurichten.