Freigeben über


Signieren Ihres MSIX-Pakets: End-to-End-Anleitung

Dieser Leitfaden führt Sie durch das Signieren eines MSIX-Pakets für jede Entwicklungsstufe – von lokalen Tests über die Produktionsverteilung. Einen Vergleich der Signaturoptionen und -kosten finden Sie unter Signieren einer MSIX-Paketübersicht.

Auswählen eines Signaturansatzes

Etappe Empfohlener Ansatz Windows-Version
Lokale Entwicklung und Tests WinApp CLI (selbstsigniertes Zertifikat) Windows 10 und höher
An Tester verteilen (Querladen) Selbstsigniertes Zertifikat mit Zertifikatvertrauensschritt Windows 10 und höher
Produktionsverteilung Azure Artefaktsignierung (vormals Vertrauenssignierung) Windows 10 Version 1809 und höher, Windows Server 2016 und höher
Microsoft Store Vertrieb Vom Store bei der Übermittlung signiert Alle unterstützten Windows-Versionen

Entwicklung: Signieren für lokale Tests

Verwenden Sie für die lokale Entwicklung ein selbstsigniertes Zertifikat. Selbstsignierte Pakete können nur auf Computern installiert werden, auf denen das Zertifikat explizit als vertrauenswürdig eingestuft wird – dies ist beabsichtigt und für Tests geeignet.

Von Bedeutung

Die Windows-App Development CLI befindet sich derzeit in public preview und erfordert Windows 10 mit WinGet installiert.

Die WinApp CLI verarbeitet die Zertifikatgenerierung und Anmeldung in einem einzelnen Schritt.

Schritt 1: Installieren der WinApp CLI

winget install -e --id Microsoft.WinAppCLI --source winget

Schritt 2: Generieren eines selbstsignierten Entwicklungszertifikats

winapp cert generate --manifest .\appxmanifest.xml --output .\devcert.pfx --install

Die --manifest Kennzeichnung liest den Herausgebernamen direkt aus Ihrem appxmanifest.xml. Das --install Flag fügt das Zertifikat dem vertrauensbasierten Speicher des lokalen Computers hinzu, sodass Sie das Paket sofort installieren können.

Schritt 3: Signieren des Pakets

winapp sign MyApp.msix --cert .\devcert.pfx

Option B: PowerShell + SignTool (Windows 10 und höher)

Verwenden Sie diesen Ansatz, wenn Sie die WinApp CLI nicht verwenden.

Schritt 1: Erstellen eines selbstsignierten Zertifikats

Führen Sie Folgendes in einer PowerShell-Eingabeaufforderung mit erhöhten Rechten aus. Der Wert Subject muss exakt mit dem Publisher in Ihrem appxmanifest.xml übereinstimmen:

New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature `
  -Subject "CN=MyPublisher" `
  -CertStoreLocation "Cert:\CurrentUser\My" `
  -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") `
  -FriendlyName "MyApp Dev Cert"

Notieren Sie sich den Fingerabdruck in der Ausgabe – Sie benötigen ihn in den nächsten Schritten.

Schritt 2: Exportieren des Zertifikats in eine PFX-Datei

$password = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Thumbprint>" `
  -FilePath .\devcert.pfx -Password $password

Schritt 3: Lokales Vertrauen des Zertifikats

Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
  -FilePath .\devcert.pfx -Password $password

Schritt 4: Signieren des Pakets

SignTool sign /fd SHA256 /a /f .\devcert.pfx /p "YourPassword" MyApp.msix

Vollständige SignTool-Verwendung finden Sie unter Signieren eines App-Pakets mit SignTool.


Testen: Bereitstellung an Tester mit einem selbstsignierten Zertifikat

Um ein selbstsigniertes MSIX-Paket auf dem Computer eines Testers zu installieren, muss das Zertifikat zuerst auf diesem Computer als vertrauenswürdig eingestuft werden.

Hinweis

Bei Windows 10 Version 2004 und höher und Windows 11 ist das Querladen standardmäßig aktiviert. In früheren Windows 10-Versionen müssen Tester Sideload-Apps unter Einstellungen Update & Sicherheit Für Entwickler aktivieren.

Geben Sie Testern das Zertifikat: Teilen Sie die .pfx Datei oder .cer (nur öffentliche Schlüssel) zusammen mit dem .msix Paket.

Tester führen Folgendes in einer PowerShell-Eingabeaufforderung mit erhöhten Rechten aus:

# If you shared a .pfx file (testers need the password)
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
  -FilePath .\devcert.pfx -Password (ConvertTo-SecureString "YourPassword" -Force -AsPlainText)

# If you shared a .cer file (public key only, no password needed)
Import-Certificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -FilePath .\devcert.cer

Nach dem Vertrauen auf das Zertifikat können Tester das .msix Zertifikat installieren, indem Sie darauf doppelklicken.

Von Bedeutung

Selbstsignierte Zertifikate sollten nur für Tests verwendet werden. Entfernen Sie sie von Testercomputern, wenn sie nicht mehr benötigt werden. Verwenden Sie für die breite Verteilung stattdessen eine öffentlich vertrauenswürdige Signaturmethode.


Produktion: Azure-Artefaktsignierung (ehemals Trusted Signing)

Gilt für: Windows 10 Version 1809 und höher, Windows 11 (alle Versionen), Windows Server 2016 und höher

Azure Artifact Signing ist der neue Name für das, was zuvor als "Trusted Signing" bezeichnet wurde. Der Dienst ist identisch – nur der Name wurde geändert. Möglicherweise wird in einigen Tools (z. B. der azure/trusted-signing-action GitHub Action und der winget Paket-ID) weiterhin "Vertrauenswürdiges Signieren" angezeigt, da diese Verweise im Laufe der Zeit aktualisiert werden.

Azure-Artefaktsignierung ist die empfohlene Option für die MSIX-Signierung in der Produktion. Der Ruf ist an Ihre überprüfte Identität und nicht an ein bestimmtes Zertifikat gebunden, was bedeutet, dass Ihre Publisher-Identität im Laufe der Zeit den SmartScreen-Ruf aufbaut, während Benutzer Ihre signierten Apps installieren. Siehe Sign an MSIX package overview für Informationen zu den Berechtigungsvoraussetzungen und Kosten, bevor Sie ein Konto einrichten.

Von Bedeutung

Azure Artifact Signing Verfügbarkeit: Organisationen in den USA, Kanada, der Europäischen Union und dem Vereinigten Königreich können sich anmelden. Einzelne Entwickler sind derzeit auf die USA und Kanada beschränkt. Wenn Sie ein einzelner Entwickler außerhalb dieser Regionen sind, verwenden Sie stattdessen ein OV-Codesignaturzertifikat von einer Zertifizierungsstelle (siehe Produktion: OV-Codesignaturzertifikat unten).

Hinweis

Das Signieren mit Azure Artifact Signing bietet nicht sofortiges SmartScreen-Vertrauen. Ähnlich wie bei OV-Zertifikaten zeigen Ihre Apps zunächst eine SmartScreen-Warnung an, bis Ihre Herausgeberidentität eine ausreichende Download-Reputation aufgebaut hat – in der Regel nach mehreren Wochen und mit Hunderten von erfolgreichen Installationen. Dies ist das erwartete Verhalten für neue Veröffentlichende. Ausführliche Informationen zur Funktionsweise der SmartScreen-Reputation und zu den Erwartungen als neuer Herausgeber finden Sie unter SmartScreen-Reputation für Windows App-Entwickler.

Voraussetzungen

  • Ein Artefaktsignierungskonto mit abgeschlossener Identitätsüberprüfung und einem erstellten Zertifikatprofil. Sehen Sie sich die Kurzanleitung zur Artefaktsignierung an.
  • Die Rolle des Signierers für vertrauenswürdige Signaturzertifikate , die der Identität zugewiesen ist, die für die Signatur verwendet wird.

Schritt 1: Installieren Sie die Artefakt-Signierungs-Client-Tools

Die Artefaktsignierclienttools enthalten das erforderliche Dlib-Plug-In, eine kompatible Version von SignTool und die .NET 8 Laufzeit. Die Standardmäßige SignTool-Syntax funktioniert nicht mit Artefaktsignierung ohne dieses Paket.

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

Wenn WinGet nicht verfügbar ist (z. B. auf einem Windows Server Build-Agent), installieren Sie sie über PowerShell als Administrator:

$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

Schritt 2: Erstellen einer JSON-Metadatendatei

Erstellen Sie eine Datei metadata.json mit den Details Ihres Kontos für die Artefakt-Signierung. Der Endpunkt-URI muss mit der region Azure übereinstimmen, in der Sie Ihr Konto erstellt haben (suchen Sie ihn im Azure Portal unter Ihrem Artefaktsignierungskonto als Account-URI):

{
  "Endpoint": "https://<region>.codesigning.azure.net/",
  "CodeSigningAccountName": "<your-account-name>",
  "CertificateProfileName": "<your-certificate-profile-name>"
}

Die vollständige Liste der regionsspezifischen Endpunkt-URIs finden Sie unter Signieren von Integrationen.

Schritt 3: Authentifizieren

Legen Sie Ihre Azure Anmeldeinformationen als Umgebungsvariablen fest (verwenden Sie App-Registrierungsanmeldeinformationen für CI/CD):

$env:AZURE_CLIENT_ID     = "<your-client-id>"
$env:AZURE_TENANT_ID     = "<your-tenant-id>"
$env:AZURE_CLIENT_SECRET = "<your-client-secret>"

Alternativ können Sie die interaktive lokale Signatur ausführen az login .

Schritt 4: Signieren des Pakets

Verwenden Sie das SignTool, das mit den Artefakt-Signierungs-Client-Tools installiert ist. Die /dlib Kennzeichnung verweist auf das im vorherigen Schritt installierte dlib-Plug-In:

signtool sign /v /fd SHA256 `
  /tr "https://timestamp.acs.microsoft.com" /td SHA256 `
  /dlib "C:\Program Files (x86)\Microsoft\ArtifactSigningClientTools\bin\Azure.CodeSigning.Dlib.dll" `
  /dmdf .\metadata.json `
  MyApp.msix

Tipp

Verwenden Sie das /debug Flag, um eine detaillierte Ausgabe zu erhalten, wenn die Signatur fehlschlägt – es werden Zertifikatkette- und Authentifizierungsdetails angezeigt.

CI/CD: GitHub Actions

Verwenden Sie den offiziellen azure/trusted-signing-action:

- name: Sign MSIX with Azure Artifact Signing
  uses: azure/trusted-signing-action@v0
  with:
    azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
    azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
    azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
    endpoint: ${{ secrets.AZURE_TRUSTED_SIGNING_ENDPOINT }}
    trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
    certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
    files-folder: ${{ github.workspace }}\output
    files-folder-filter: msix

Informationen zu Azure DevOps finden Sie unter Set up Azure DevOps with Trusted Signing.


Produktion: Microsoft Store Distribution

Gilt für: Alle unterstützten Windows-Versionen

Wenn Sie über den Microsoft Store verteilen, müssen Sie das Paket nicht selbst signieren – der Store signiert es während des Einreichungsprozesses. Erstellen Sie Ihr Paket, und übermitteln Sie es über das Partner Center. Der Store stellt eine global vertrauenswürdige Signatur bereit und behandelt alle Zertifikatverwaltungen.


Produktion: OV-Codesignaturzertifikat

Gilt für: Windows 10 und höher

Wenn die Artefaktsignierung für Ihre Region oder Situation nicht verfügbar ist, können Sie ein OV(Organization Validation)-Codesignaturzertifikat von einer Zertifizierungsstelle (Ca) wie DigiCert, Sectigo oder GlobalSign erwerben. Die Kosten liegen in der Regel zwischen 300 und 500 $ pro Jahr.

Sobald Sie über eine PFX-Datei aus Ihrer Zertifizierungsstelle verfügen:

SignTool sign /fd SHA256 /a /f .\cert.pfx /p "YourPassword" `
  /tr http://timestamp.digicert.com /td SHA256 `
  MyApp.msix

Vollständige Signaturoptionen finden Sie unter Signieren eines App-Pakets mit SignTool.

Hinweis

OV-Zertifikate bieten keine sofortige SmartScreen-Vertrauensstellung. Der Ruf baut sich über die Zeit auf, wenn Ihre signierten Pakete installiert werden, ohne beanstandet zu werden. Ausführliche Informationen finden Sie unter SmartScreen-Reputation für Windows App-Entwickler.