Erstellen eines Paketsignaturzertifikats
In diesem Artikel wird erläutert, wie Sie mithilfe von PowerShell-Tools ein Zertifikat für die Signatur von App-Paketen erstellen und exportieren. Es wird empfohlen, Visual Studio zum Packen von UWP-Apps und Zum Packen von Desktop-Apps zu verwenden, aber Sie können eine App trotzdem manuell verpacken, wenn Sie Ihre App nicht mit Visual Studio entwickelt haben.
Voraussetzungen
Eine gepackte oder nicht gepackte App
Eine App, die eine AppxManifest.xml-Datei enthält. Sie müssen beim Erstellen des Zertifikats, das zum Signieren des endgültigen App-Pakets verwendet wird, auf die Manifestdatei verweisen. Ausführliche Informationen zum manuellen Verpacken einer App finden Sie unter Erstellen eines App-Pakets mit dem tool MakeAppx.exe.PKI-Cmdlets (Public Key Infrastructure)
Sie benötigen PKI-Cmdlets, um Ihr Signaturzertifikat zu erstellen und zu exportieren. Weitere Informationen finden Sie unter Public Key-Infrastruktur-Cmdlets.
Erstellen eines selbstsignierten Zertifikats
Ein selbstsigniertes Zertifikat ist nützlich, um Ihre App zu testen, bevor Sie bereit sind, sie im Store zu veröffentlichen. Führen Sie die in diesem Abschnitt beschriebenen Schritte aus, um ein selbstsigniertes Zertifikat zu erstellen.
Hinweis
Wenn Sie ein selbstsigniertes Zertifikat erstellen und verwenden, können nur Benutzer, die Ihr Zertifikat installieren und vertrauenswürdig sind, Ihre Anwendung ausführen. Dies ist für Tests leicht zu implementieren, kann aber verhindern, dass zusätzliche Benutzer Ihre Anwendung installieren. Wenn Sie bereit sind, Ihre Anwendung zu veröffentlichen, wird empfohlen, ein zertifikat zu verwenden, das von einer vertrauenswürdigen Quelle ausgestellt wurde. Dieses system of centralized trust trägt dazu bei, sicherzustellen, dass das Anwendungsökosystem über Überprüfungsebenen verfügt, um Benutzer vor böswilligen Akteuren zu schützen.
Bestimmen des Betreffs Ihrer gepackten App
Um ein Zertifikat zum Signieren Ihres App-Pakets zu verwenden, muss der "Betreff" im Zertifikat mit dem Abschnitt "Herausgeber" im Manifest Ihrer App übereinstimmen.
Der Abschnitt "Identität" in der AppxManifest.xml-Datei Ihrer App sollte beispielsweise wie folgt aussehen:
<Identity Name="Contoso.AssetTracker"
Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>
Der "Verleger" lautet in diesem Fall "CN=Contoso Software, O=Contoso Corporation, C=US", der zum Erstellen Ihres Zertifikats verwendet werden muss.
Verwenden von New-SelfSignedCertificate zum Erstellen eines Zertifikats
Verwenden Sie das PowerShell-Cmdlet New-SelfSignedCertificate , um ein selbstsigniertes Zertifikat zu erstellen. New-SelfSignedCertificate verfügt über mehrere Parameter für die Anpassung, aber im Sinne dieses Artikels konzentrieren wir uns auf die Erstellung eines einfachen Zertifikats, das mit SignTool funktioniert. Weitere Beispiele und Verwendungen dieses Cmdlets finden Sie unter New-SelfSignedCertificate.
Basierend auf der AppxManifest.xml Datei aus dem vorherigen Beispiel sollten Sie die folgende Syntax verwenden, um ein Zertifikat zu erstellen. In einer PowerShell-Eingabeaufforderung mit erhöhten Rechten:
New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName "Your friendly name goes here" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
Beachten Sie die folgenden Details zu einigen der Parameter:
KeyUsage: Dieser Parameter definiert, wofür das Zertifikat verwendet werden kann. Für ein selbstsignierendes Zertifikat sollte dieser Parameter auf DigitalSignature festgelegt werden.
TextExtension: Dieser Parameter enthält Einstellungen für die folgenden Erweiterungen:
Erweiterte Schlüsselverwendung (Extended Key Usage, EKU): Diese Erweiterung gibt zusätzliche Zwecke an, für die der zertifizierte öffentliche Schlüssel verwendet werden kann. Für ein selbstsignierendes Zertifikat sollte dieser Parameter die Erweiterungszeichenfolge "2.5.29.37={text}1.3.6.1.5.5.7.3.3" enthalten, die angibt, dass das Zertifikat für die Codesignatur verwendet werden soll.
Grundlegende Einschränkungen: Diese Erweiterung gibt an, ob es sich bei dem Zertifikat um eine Zertifizierungsstelle (Ca) handelt. Für ein selbstsignierendes Zertifikat sollte dieser Parameter die Erweiterungszeichenfolge "2.5.29.19={text}" enthalten, die angibt, dass das Zertifikat eine Endentität (keine Zertifizierungsstelle) ist.
Nach dem Ausführen dieses Befehls wird das Zertifikat dem lokalen Zertifikatspeicher hinzugefügt, wie im Parameter "-CertStoreLocation" angegeben. Das Ergebnis des Befehls erzeugt auch den Fingerabdruck des Zertifikats.
Sie können Ihr Zertifikat in einem PowerShell-Fenster anzeigen, indem Sie die folgenden Befehle verwenden:
Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint
Dadurch werden alle Zertifikate in Ihrem lokalen Speicher angezeigt.
Exportieren eines Zertifikats
Verwenden Sie das Cmdlet Export-PfxCertificate , um das Zertifikat im lokalen Speicher in eine PFX-Datei (Personal Information Exchange) zu exportieren.
Wenn Sie Export-PfxCertificate verwenden, müssen Sie entweder ein Kennwort erstellen und verwenden oder den Parameter "-ProtectTo" verwenden, um anzugeben, welche Benutzer oder Gruppen ohne Kennwort auf die Datei zugreifen können. Beachten Sie, dass ein Fehler angezeigt wird, wenn Sie weder den Parameter "-Password" noch den Parameter "-ProtectTo" verwenden.
Kennwortverwendung
$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password
ProtectTo-Verwendung
Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>
Nachdem Sie Ihr Zertifikat erstellt und exportiert haben, können Sie Ihr App-Paket mit SignTool signieren. Den nächsten Schritt im manuellen Paketerstellungsprozess finden Sie unter Signieren eines App-Pakets mit SignTool.
Sicherheitshinweise
Wenn Sie ein Zertifikat zu Zertifikatspeichern des lokalen Computers hinzufügen, wirken Sie sich auf die Zertifikatvertrauensstellung aller Benutzer auf dem Computer aus. Es wird empfohlen, diese Zertifikate zu entfernen, wenn sie nicht mehr erforderlich sind, um zu verhindern, dass sie zur Gefährdung der Systemvertrauensstellung verwendet werden.