639 Stimmen

Wie erstelle ich eine .pfx-Datei aus Zertifikat und privatem Schlüssel?

Ich benötige die .pfx-Datei, um HTTPS auf der Website auf IIS zu installieren.

Ich habe zwei separate Dateien: Zertifikat (.cer oder pem) und privaten Schlüssel (.crt), aber IIS akzeptiert nur .pfx-Dateien.

Ich habe das Zertifikat offensichtlich installiert und es ist im Zertifikats-Manager (mmc) verfügbar, aber wenn ich den Zertifikatsexportassistenten auswähle, kann ich das PFX-Format nicht auswählen (es ist ausgegraut).

Gibt es Werkzeuge, um das zu tun, oder C#-Beispiele, um das programmgesteuert zu tun?

2 Stimmen

1 Stimmen

Wahr, aber seine Antwort ist nicht klar und löst mein Problem nicht

0 Stimmen

967voto

jdehlin Punkte 10081

Sie müssen openssl verwenden.

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

Die Schlüsseldatei ist nur eine Textdatei mit Ihrem privaten Schlüssel darin.

Wenn Sie Stamm- und Zwischenzertifikate haben, fügen Sie diese auch mit mehreren -in-Parametern hinzu

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

Wenn Sie eine gebündelte crt-Datei haben, die Sie z. B. mit nginx verwenden, können Sie diese zusammen mit dem Zertifikat alles in einem übergeben:

cat domain.name.crt | tee -a domain.name.bundled.crt
cat intermediate.crt | tee -a domain.name.bundled.crt
cat rootca.crt | tee -a domain.name.bundled.crt
openssl pkcs12 -export -out domain.name.pfx \
  -inkey domain.name.key \
  -in domain.name.bundled.crt 

Sie können openssl von hier installieren: openssl

78voto

Yura Punkte 1534

Lösung für Windows, die kein installiertes OpenSSL erfordert

Ich habe kürzlich versucht, dasselbe Problem zu lösen - und ich hatte nur einen Windows-Laptop ohne installiertes OpenSSL (und nicht genug Adminrechte, um es zu installieren). Es stellt sich heraus, dass Windows ein integriertes Dienstprogramm namens certutil hat, das in der Lage ist, .crt- und .key-Dateien in .pfx zu kombinieren. Die Dokumentation finden Sie hier.

Sie müssen einen neuen Ordner erstellen und Ihre .crt und Schlüssel-Dateien darin platzieren. Benennen Sie beide Dateien um, damit sie denselben Namen haben (aber mit einer anderen Erweiterung):

{{sitename}}.crt
{{siteName}}.key

Falls Ihre Schlüsseldatei ein reguläres txt ist - ändern Sie einfach die Erweiterung in .key.

Öffnen Sie anschließend die Eingabeaufforderung in diesem Ordner und führen Sie certutil -mergepfx [INPUTFILE] [OUTPUTFILE] aus.

Beispiel:

Zertifikatsdatei: mySite.crt

Schlüsseldatei: mySite.key

certutil-Befehl: certutil -mergepfx mySite.crt mySite.pfx

Hinweis: Sie werden aufgefordert, ein Passwort für die neu erstellte .pfx-Datei anzugeben - vergessen Sie nicht, es sich zu merken/aufzubewahren, da es bei der Zertifikatseinfuhr in das Zielsystem erforderlich sein wird.

51voto

joelnet Punkte 12501

Wenn Sie nach einer Windows-GUI suchen, schauen Sie sich DigiCert an. Ich habe es gerade benutzt und es war ziemlich einfach.

Unter dem SSL-Tab habe ich zuerst das Zertifikat importiert. Sobald ich das Zertifikat ausgewählt hatte, konnte ich es sowohl mit als auch ohne Schlüsselfeile als PFX exportieren.

https://www.digicert.com/util

41voto

Seymour Punkte 6994

Der Microsoft Pvk2Pfx Befehlszeilen-Dienstprogramm scheint die Funktionalität zu haben, die Sie benötigen:

Pvk2Pfx (Pvk2Pfx.exe) ist ein Befehlszeilentool, das öffentliche Schlüssel- und private Schlüsselinformationen aus .spc-, .cer- und .pvk-Dateien in eine Personal Information Exchange (.pfx) Datei kopiert.
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

Hinweis: Wenn Sie eine C#-Lösung benötigen/möchten/ bevorzugen, könnte die Verwendung der http://www.bouncycastle.org/ api für Sie infrage kommen.

36voto

rainabba Punkte 3396

Sie brauchen NICHT openssl oder makecert oder ähnliches. Sie brauchen auch nicht den persönlichen Schlüssel, den Ihnen Ihr CA gegeben hat. Ich kann fast garantieren, dass das Problem darin besteht, dass Sie erwarten, den Schlüssel und die cer-Dateien zu verwenden, die Ihnen Ihr CA zur Verfügung stellt, aber sie nicht auf "die IIS-Weise" basieren.

SSL-Zertifikate für IIS mit PFX einmal für alle - SSL und IIS erklärt - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Verwenden Sie die IIS-"Serverzertifikate" -Benutzeroberfläche, um eine "Zertifikatsanforderung zu generieren" (die Details dieser Anforderung liegen außerhalb des Umfangs dieses Artikels, aber diese Details sind entscheidend). Dadurch erhalten Sie eine CSR, die für IIS vorbereitet ist. Geben Sie dann diese CSR an Ihr CA und fordern Sie ein Zertifikat an. Nehmen Sie dann die CER/CRT-Datei, die sie Ihnen geben, gehen Sie zurück zu IIS, und "Vervollständigen Sie die Zertifikatsanforderung" am selben Ort, an dem Sie die Anforderung generiert haben. Es kann nach einer .CER fragen und Sie haben vielleicht eine .CRT. Sie sind dasselbe. Ändern Sie einfach die Erweiterung oder verwenden Sie das . Erweiterungs-Dropdown, um Ihre .CRT auszuwählen. Geben Sie jetzt einen geeigneten "freundlichen Namen" an (*.ihredomain.beispiel, ihredomain.beispiel, foo.ihredomain.beispiel, etc.). DAS IST WICHTIG! Dies MUSS mit dem übereinstimmen, was Sie für die CSR eingerichtet haben und was Ihnen Ihr CA bereitgestellt hat. Wenn Sie eine Wildcard angefordert haben, muss Ihr CA eine Genehmigung und eine Wildcard generiert haben, und Sie müssen dieselbe verwenden. Wenn Ihre CSR für foo.ihredomain.beispiel generiert wurde, MÜSSEN Sie dies bei diesem Schritt angeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X