Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Option A: WinApp CLI (empfohlen für neue Projekte)
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
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.