Nach dieser Dokumentation:
https://docs.Microsoft.com/de-de/windows-hardware/drivers/devtest/makecert
Der folgende Befehl beschreibt das Erstellen einer Windows-Cer-Datei (d. H. Eines Zertifikats von einem vertrauenswürdigen Anbieter).
Das Problem dabei ist, dass beim Erstellen einer Anwendung in Visual Studio 2017 nur über das package.windows10.appxmanifest eine pfx-Datei zulässig ist. Wenn Sie diese Befehlszeilenreferenz aktualisieren, wird keine Pvk-Datei erstellt, und Sie müssen sie hinzufügen
MakeCert -r -pe -ss PrivateCertStore -n "CN=Contoso.com(Test)" testcert.cer
zusätzliche Befehlszeilenoptionen wie/sv SubjectKeyFile, die die resultierende pvk-Datei erzeugen.
Allerdings auch mit dieser Befehlszeilenreferenz:
MakeCert -r -pe -ss PrivateCertStore -n "CN=Contoso.com(Test)" -sv testcert.pvk testcert.cer
Die resultierende Implantation der cert-Datei in Visual Studio führt zu diesem Fehler:
Der Manifest-Designer konnte das Zertifikat nicht importieren.
Das ausgewählte Zertifikat ist nicht zum Signieren gültig, da es abgelaufen ist oder ein anderes Problem vorliegt. Weitere Informationen finden Sie unter http://go.Microsoft.com/fwlink/?LinkID=241478
Ich gehe zum Link und nichts erklärt wirklich was los ist. Eine Person kommentiert ein temporäres, das funktioniert, aber es ist ein nichtspezifisches Testzertifikat, das nur ein Jahr dauert.
Gibt es eine bessere Möglichkeit, das Skript mit makecert zu erstellen? Woher weiß ich, ob das Zertifikat letztendlich korrekt erstellt wird oder nicht? Zusätzliche Dokumentation wäre hilfreich, aber ich habe nichts anderes gefunden.
Die Antwort von @nico hat korrekte Aussagen, aber sie hat mir klar gemacht, dass das Problem mehr war, als ich anfangs beschrieben hatte. Also habe ich den Fragetitel und die Frage aufgeräumt, um eine bessere Frage und nachfolgende Antwort zu geben.
Durch das Internet erschöpft, fand ich viele dieser Antworten an so vielen verschiedenen Orten, d. H. Fragen, Antworten in Kommentaren, Youtube usw. Ich habe mich entschieden, sie alle hier an einem schönen Ort zu platzieren, damit jeder Ressourcen finden und lernen kann.
Zuerst muss man sich fragen, wofür sie die Anwendung verwenden. Wird die Anwendung in den Microsoft Store hochgeladen oder darf sie nur intern verwendet werden?
So oder so wollen Sie die Anwendung debuggen und entwickeln. Für das Debugging muss kein Zertifikat installiert werden. In diesem Sinne sind wir also sicher.
Wenn Sie die Anwendung intern für Ihre Organisation oder einfach auf Ihrem lokalen Computer verwenden, benötigen Sie ein vertrauenswürdiges Zertifikat.
Dieses Zertifikat kann in verschiedenen Szenarien existieren.
Ich werde beide Szenarien durchgehen. In beiden Fällen ist das Protokoll von makecert abgelehnt.
Szenario 1: Wenn Sie ein selbstsigniertes Zertifikat benötigen, gehen Sie folgendermaßen vor.
Hier sind die Links, die folgen sollen *** Lesen Sie unbedingt 1A, bevor Sie Ihr Zertifikat erstellen:
Zertifikatpaket-Signatur erstellen
New-SelfSignedCertificate
1A. *** Wenn Sie das New-SelfSignedCertificate erstellen, müssen Sie verstehen, dass das Zertifikat auf eine bestimmte Weise erstellt werden muss. Dies ist für ein selbstsigniertes oder von einer Zertifizierungsstelle ausgestelltes Zertifikat.
Insbesondere muss das Zertifikat 2 Eigenschaften besitzen
ein). Es muss eine Basic Constraints-Erweiterung vorhanden sein, die auf Subject Type = End Entity gesetzt ist. In einfachen Worten heißt das Folgendes: Wenn dieses Zertifikat an Sie ausgestellt wird, können Sie das Zertifikat nicht zu einer weiteren nachfolgenden Zertifizierungsstelle mit der Fähigkeit, weitere Zertifikate auszustellen, haben. Mit anderen Worten ... Dies ist ein Ende des Zeilenzertifikats.
Weitere Informationen zu Einschränkungen finden Sie hier: https://blogs.technet.Microsoft.com/pki/2014/03/05/constraints-what-they-are-and-how-theyre-used/)
b). Der Wert der Erweiterung "Enahnced Key Usage" (EKU) ist auf "Code Signing" gesetzt. Dadurch wird verhindert, dass das Zertifikat für einen anderen Zweck als für den vorgesehenen Zweck verwendet wird. Dies stellt sicher, dass Software vom Softwarehersteller stammt. &&& Schützt Software vor Änderungen nach der Veröffentlichung.
In den Details des Zertifikats sehen die Informationen folgendermaßen aus:
Codesignatur (1.3.6..1.5.5.7.3.3) <<<< Dies ist die erweiterte Schlüsselverwendung OID für die Codesignatur der 1.3.6 ... -Nummer
Diese Informationen wurden sehr zufällig und nicht in einer bestimmten Reihenfolge fließender Dokumentation gefunden, hier:
Generieren von Zertifikaten für die Windows Store-Apps
1B. Wenn Sie also das New-SelfSignedCertifcate-Cmdlet über Powershell verwenden, wird der Befehl als solcher ausgeführt:
New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=YourCompany CA, 0=Your Corporation, C=US" -TextExtension @("2.5.29.19={text}false") -KeyUsage DigitalSignature -KeyLength 2048 -NotAfter (Get-Date).AddMonths(33) -FriendlyName friendlyName2
Der obige Befehl erfüllt beide Kriterien eines Codesignaturzertifikats (obwohl Sie anstelle der Eigenschaft -type auch eine Key Usage Extention oid mit einem entsprechenden Codesignaturtyp verwenden können, z. B. Code signing oid = 1.3.6.1.5.5.7.3. 3)
Wenn Sie den obigen Befehl in Powershell ausführen, erstellen Sie zwei Dinge, die jetzt exportiert werden können ...
A.) ein öffentliches Zertifikat B.) Einen privaten Schlüssel + öffentliches Zertifikat in einem PFX-Dateiformat.
Nun, da wir nun die Möglichkeit haben, die .pfx-Datei zu exportieren, gehen Sie wie folgt vor, um ein Kennwort zu erstellen und die Datei mit dem privaten Schlüssel + certifcate .pfx zu exportieren.Mit dem Befehl würden Sie das Cmdlet in Powershell Export-PfxCertificate ausführen:.
$pwd = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\LocalMachine\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $pwd
Szenario 2: Wenn Sie ein vertrauenswürdiges Zertifikat von der Zertifizierungsstelle Ihrer Organisation benötigen
Hierbei ist zu beachten, dass der Abschnitt oben relevant ist, Sie müssen jedoch die Unterschiede zwischen einem selbst signierten Zertifikat und einer vertrauenswürdigen Stammzertifikatszertifizierungsstelle und einer nachfolgenden Zertifizierungsstelle erkennen.
Nun, hier ist eine Möglichkeit, es zu verstehen. Ein Stammzertifikat zu Beginn war ein selbstsigniertes Zertifikat. Es hat jedoch die Möglichkeit, Zertifikate für verschiedene Dinge auszustellen. d. h. Serverautorisierung oder Codesignatur ... Think Basic Contstraints UNLIMITED. Und es kann auch andere Zertifizierungsstellen ausstellen, die Zertifikate aus verschiedenen Gründen an andere ausstellen können.
Dies wird als Zertifizierungskette bezeichnet. Denken Sie daran, dass das Zertifikat, das wir für unsere Zwecke wünschen, das Ende dieser Kette ist ... Basic Constraints = LIMTED auf 0 oder false, was bedeutet, dass es als End-Endtity oder Certificate Authroity = false in anderen signiert sein muss Sie können also aus diesem Grund keine weiteren Zertifikate ausstellen.
Da dies für eine Anwendung ist, die einfach installiert und verwendet werden muss. Das macht Sinn.
Lesen Sie erneut diesen Link: https://blogs.technet.Microsoft.com/pki/2014/03/05/constraints-what-they-are-and-how-theyre-used/
Für das nächste Segment werde ich daher die Schritte erläutern, um ein Zertifikat von Ihrer Zertifizierungsstelle über eine Zertifikatsanforderung anzufordern. In der Linux-Welt über openssl wird dies als .csr bezeichnet. In der Powershell-Welt wird dies als .req bezeichnet
Wenn Sie die Parameter genau richtig setzen ... ist das Endergebnis eine Datei, die von der Website openssl oder cert mit einer austauschbaren Erweiterung von .req oder .csr gelesen werden kann
Powershell bietet die Möglichkeit, dies über ein Cmdlet namens CertReq zu erstellen.
Sie würden diesen Befehl einfach zusammen mit der Übergabe einer INF-Datei verwenden, die Ihre .req-Zertifikatsanforderung erstellt
die INF-Datei enthält Parameter für Schlüssel- und Zertifikatinformationen, ähnlich wie beim Erstellen eines neuen selbstsignierten Zertifikats aus den obigen Informationen.
[NewRequest]
Subject = "C=US,ST=Florida,L=City,O=Your Company Information,OU=City
Information,CN=certname.com"
Requesttype = PKCS10
Exportable = TRUE
HashAlgorithm = md5
KeyAlgorithm = RSA
KeyLength = 2048
KeyUsage = CERT_DIGITAL_SIGNATURE_KEY_USAGE
FriendlyName = "FriendlyName CERT"
[Extensions]
2.5.29.19 = "{text}false"
2.5.29.37 = "{text}1.3.6.1.5.5.7.3.3"
der Requesttype = PKCS10 erlaubt das Arbeiten mit dem CSs-Decoder openssl ... und alles andere wird über diese Sites erklärt:
-----BEGIN NEW CERTIFICATE REQUEST-----
-----END NEW CERTIFICATE REQUEST-----
Ich hoffe, diese Informationen helfen jemandem, mehr über Zertifikate und deren Verwendung beim Verpacken und Erstellen von Windows Store-Anwendungen zu erfahren.
I hope this information helps someone learn about certs and how they are used in the packaging and creation of Windows store applications.
Laut dieser Dokumentation: https://docs.Microsoft.com/en-us/windows-hardware/drivers/devtest/makecert .
Der obige Link wird in Ihrem Fall verwendet, um ein Windows-Zertifikat für den Treiber zu erstellen. Wenn Sie das Zertifikat für Ihr UWP-Paket erstellen möchten, können Sie die folgenden Schritte ausführen:
Schritt 1: Ermitteln Sie den Herausgebernamen des Pakets
Schritt 2: Erstellen Sie einen privaten Schlüssel mit MakeCert.exe
Schritt 3: Erstellen Sie mit Pvk2Pfx.exe eine Persönliche Informationsaustauschdatei (.pfx)
Weitere Informationen finden Sie unter So erstellen Sie ein Signaturzertifikat für App-Pakete .
Sie können den folgenden Befehl auch verwenden, um ein Zertifikat direkt zu erstellen. Sie müssen lediglich den Parameter CN
durch Ihren Parameter ersetzen.
Pvk machen
"<C:\Program Files (x86)\Windows Kits\10\bin\x64\MakeCert.exe>" /n "CN=Company, O=My Company, C=US" /r /pe /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /e 01/01/2018 /sv C:\Development\certificates\Company.pvk C:\Development\certificates\Company.cer
Hersteller Cer
"<C:\Program Files (x86)\Windows Kits\10\bin\x64\Pvk2Pfx.exe>" /pvk C:\Development\certificates\Company.pvk /pi pvkPassword /spc C:\Development\certificates\Company.cer /pfx C:\Development\certificates\Company.pfx /po password! /pi password!