Kann mir jemand den richtigen Weg/Befehl zum Extrahieren/Konvertieren des Zertifikats nennen? .crt
und privater Schlüssel .key
Dateien aus einer .pem
Datei? Ich habe gerade gelesen, dass sie austauschbar sind, aber nicht wie.
Antworten
Zu viele Anzeigen?Konvertierung mit OpenSSL
Mit diesen Befehlen können Sie Zertifikate und Schlüssel in verschiedene Formate konvertieren, um sie mit bestimmten Servern oder Softwaretypen kompatibel zu machen.
-
Konvertierung einer DER-Datei (.crt .cer .der) in PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
-
Konvertieren einer PEM-Datei in DER
openssl x509 -outform der -in certificate.pem -out certificate.der
-
Konvertieren einer PKCS#12-Datei (.pfx .p12), die einen privaten Schlüssel und Zertifikate enthält, in PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
-
Konvertierung einer PEM-Zertifikatsdatei und eines privaten Schlüssels in PKCS#12 (.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
-
PEM in CRT umwandeln (.CRT-Datei)
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL PEM umwandeln
-
PEM in DER umwandeln
openssl x509 -outform der -in certificate.pem -out certificate.der
-
PEM in P7B umwandeln
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
-
PEM in PFX umwandeln
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL konvertiert DER
-
DER in PEM umwandeln
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL umwandeln P7B
-
P7B in PEM umwandeln
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
-
P7B in PFX umwandeln
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Convert PFX
-
PFX in PEM umwandeln
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Erzeugen von rsa-Schlüsseln mit OpenSSL
-
Wenn Sie OpenSSL auf der Kommandozeile verwenden, müssen Sie zuerst einen öffentlichen und einen privaten Schlüssel generieren. Sie sollten diese Datei mit dem Argument -passout schützen, es gibt viele verschiedene Formen, die dieses Argument annehmen kann, also konsultieren Sie die OpenSSL-Dokumentation dazu.
openssl genrsa -out private.pem 1024
-
Dadurch wird eine Schlüsseldatei namens private.pem erstellt, die 1024 Bit verwendet. Diese Datei enthält sowohl den privaten als auch den öffentlichen Schlüssel, so dass Sie den öffentlichen Schlüssel aus dieser Datei extrahieren sollten:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout or openssl rsa -in private.pem -pubout > public.pem or openssl rsa -in private.pem -pubout -out public.pem
Sie haben nun eine Datei public.pem, die nur Ihren öffentlichen Schlüssel enthält und die Sie mit Dritten teilen können. Sie können das Ganze testen, indem Sie einfach etwas mit Ihrem öffentlichen Schlüssel verschlüsseln und dann mit Ihrem privaten Schlüssel entschlüsseln, denn zuerst brauchen wir ein paar Daten zum Verschlüsseln:
-
Beispieldatei :
echo 'too many secrets' > file.txt
-
Sie haben nun einige Daten in file.txt, verschlüsseln wir sie mit OpenSSL und dem öffentlichen Schlüssel:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
-
Dadurch wird eine verschlüsselte Version von file.txt erstellt, die file.ssl heißt. Wenn man sich diese Datei ansieht, ist es nur binärer Müll, nichts Nützliches für niemandem. Jetzt können Sie sie mit dem privaten Schlüssel entschlüsseln:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
-
Sie haben nun eine unverschlüsselte Datei in decrypted.txt:
cat decrypted.txt |output -> too many secrets
RSA TOOLS-Optionen in OpenSSL
-
NAME
rsa - Werkzeug zur Verarbeitung von RSA-Schlüsseln
-
SYNOPSIS
openssl rsa [-help] [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-camellia128] [- camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]
-
BESCHREIBUNG
Der Befehl rsa verarbeitet RSA-Schlüssel. Sie können zwischen verschiedenen Formen umgewandelt und ihre Komponenten ausgedruckt werden. Beachten Sie, dass dieser Befehl das traditionelle SSLeay-kompatible Format für die Verschlüsselung privater Schlüssel verwendet: Neuere Anwendungen sollten das sicherere PKCS#8-Format mit dem Dienstprogramm pkcs8 verwenden.
-
BEFEHLSOPTIONEN
-help
Drucken Sie eine Benutzungsmeldung aus.
-inform DER|NET|PEM
Hier wird das Eingabeformat angegeben. Die Option DER verwendet eine ASN1 DER-kodierte Form, die mit dem PKCS#1 RSAPrivateKey- oder SubjectPublicKeyInfo-Format kompatibel ist. Das PEM-Format ist das Standardformat: Es besteht aus dem DER-Format base64-kodiert mit zusätzlichen Kopf- und Fußzeilen. Bei der Eingabe werden auch private Schlüssel im PKCS#8-Format akzeptiert. Das NET-Format ist ein Format, das im Abschnitt NOTES beschrieben wird.
-outform DER|NET|PEM
Dies gibt das Ausgabeformat an, die Optionen haben die gleiche Bedeutung wie die Option -inform.
-in filename
Dies gibt den Namen der Eingabedatei an, aus der ein Schlüssel gelesen werden soll, oder die Standardeingabe, wenn diese Option nicht angegeben ist. Wenn der Schlüssel verschlüsselt ist, wird eine Passphrase abgefragt.
-passin arg
die Kennwortquelle der Eingabedatei. Für weitere Informationen über das Format von arg siehe den Abschnitt PASS PHRASE ARGUMENTS in openssl.
-out filename
Hier wird der Name der Ausgabedatei angegeben, in die ein Schlüssel geschrieben werden soll, oder die Standardausgabe, wenn diese Option nicht angegeben ist. Wenn irgendwelche Verschlüsselungsoptionen gesetzt sind, wird eine Passphrase abgefragt. Der Name der Ausgabedatei sollte nicht mit dem Namen der Eingabedatei übereinstimmen.
-passout password
die Kennwortquelle der Ausgabedatei. Weitere Informationen über das Format von arg finden Sie im Abschnitt PASS PHRASE ARGUMENTS in openssl.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
Diese Optionen verschlüsseln den privaten Schlüssel mit der angegebenen Chiffre, bevor er ausgegeben wird. Es wird eine Passphrase abgefragt. Wenn keine dieser Optionen angegeben wird, wird der Schlüssel im Klartext ausgegeben. Das bedeutet, dass das Dienstprogramm rsa zum Einlesen eines verschlüsselten Schlüssels ohne Verschlüsselungsoption verwendet werden kann, um die Passphrase aus einem Schlüssel zu entfernen, oder dass es durch Setzen der Verschlüsselungsoptionen verwendet werden kann, um die Passphrase hinzuzufügen oder zu ändern. Diese Optionen können nur mit Ausgabedateien im PEM-Format verwendet werden.
-text
gibt neben der verschlüsselten Version auch die verschiedenen Komponenten des öffentlichen oder privaten Schlüssels im Klartext aus.
-noout
diese Option verhindert die Ausgabe der verschlüsselten Version des Schlüssels.
-modulus
diese Option gibt den Wert des Modulus des Schlüssels aus.
-check
Diese Option prüft die Konsistenz eines privaten RSA-Schlüssels.
-pubin
standardmäßig wird ein privater Schlüssel aus der Eingabedatei gelesen: mit dieser Option wird stattdessen ein öffentlicher Schlüssel gelesen.
-pubout
standardmäßig wird ein privater Schlüssel ausgegeben: mit dieser Option wird stattdessen ein öffentlicher Schlüssel ausgegeben. Diese Option wird automatisch gesetzt, wenn die Eingabe ein öffentlicher Schlüssel ist.
-RSAPublicKey_in, -RSAPublicKey_out
wie -pubin und -pubout, außer dass stattdessen das RSAPublicKey-Format verwendet wird.
-engine id
Die Angabe eines Motors (durch seine eindeutige ID-Zeichenkette) bewirkt, dass rsa versucht, einen funktionalen Verweis auf den angegebenen Motor zu erhalten, um ihn bei Bedarf zu initialisieren. Die Engine wird dann als Standard für alle verfügbaren Algorithmen festgelegt.
-
ANMERKUNGEN
Das PEM-Format für private Schlüssel verwendet die Kopf- und Fußzeilen:
-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
Das PEM-Format für öffentliche Schlüssel verwendet die Kopf- und Fußzeilen:
-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----
Das PEM RSAPublicKey-Format verwendet die Kopf- und Fußzeilen:
-----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY-----
Die NET-Form ist ein Format, das mit älteren Netscape-Servern und Microsoft IIS .key-Dateien kompatibel ist und ungesalzene RC4 für die Verschlüsselung verwendet. Es ist nicht sehr sicher und sollte daher nur im Bedarfsfall verwendet werden.
Einige neuere Versionen von IIS enthalten zusätzliche Daten in den exportierten .key-Dateien. Um diese mit dem Dienstprogramm zu verwenden, sehen Sie sich die Datei mit einem Binäreditor an und suchen Sie nach der Zeichenfolge "private-key", dann gehen Sie zurück zur Byte-Sequenz 0x30, 0x82 (dies ist eine ASN1 SEQUENCE). Kopieren Sie alle Daten ab diesem Punkt in eine andere Datei und verwenden Sie diese als Eingabe für das Dienstprogramm rsa mit der Option -inform NET.
BEISPIELE
So entfernen Sie die Passphrase für einen privaten RSA-Schlüssel:
openssl rsa -in key.pem -out keyout.pem
Um einen privaten Schlüssel mit Triple-DES zu verschlüsseln:
openssl rsa -in key.pem -des3 -out keyout.pem
So konvertieren Sie einen privaten Schlüssel vom PEM- in das DER-Format:
openssl rsa -in key.pem -outform DER -out keyout.der
So geben Sie die Komponenten eines privaten Schlüssels auf der Standardausgabe aus:
openssl rsa -in key.pem -text -noout
Um nur den öffentlichen Teil eines privaten Schlüssels auszugeben:
openssl rsa -in key.pem -pubout -out pubkey.pem
Ausgabe des öffentlichen Teils eines privaten Schlüssels im RSAPublicKey-Format:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
So extrahieren Sie den Schlüssel und das Zertifikat aus einer pem-Datei:
Schlüssel extrahieren
openssl pkey -in foo.pem -out foo.key
Eine andere Methode, den Schlüssel zu extrahieren...
openssl rsa -in foo.pem -out foo.key
Extrahieren Sie alle Zertifizierungen, einschließlich der CA-Kette
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
Extrahieren Sie das textlich erste Zertifikat als DER
openssl x509 -in foo.pem -outform DER -out first-cert.der
Vorbedingung
openssl
installiert werden sollte. Unter Windows, wenn Git Bash
installiert ist, versuchen Sie das! Alternative Binärdateien finden Sie hier.
Schritt 1: Extrahieren .key
von .pem
openssl pkey -in cert.pem -out cert.key
Schritt 2: Extrahieren .crt
von .pem
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Das habe ich unter Windows gemacht.
- Laden Sie eine Zip-Datei herunter, die die Datei open ssl exe enthält, von Google
- Entpacken Sie die Zip-Datei und gehen Sie in den bin-Ordner.
- Gehen Sie in die Adressleiste des Ordners bin und geben Sie cmd ein. Dadurch wird eine Eingabeaufforderung in diesem Ordner geöffnet.
- Verschieben Sie die .pem-Datei in diesen bin-Ordner.
-
Führen Sie zwei Befehle aus. Einer erstellt das Zertifikat und der zweite die Schlüsseldatei
openssl x509 -outform der -in yourPemFilename.pem -out certfileOutName.crt openssl rsa -in yourPemFilename.pem -out keyfileOutName.key
- See previous answers
- Weitere Antworten anzeigen