it-swarm.com.de

Konvertieren Sie .pem in .crt und .key

Kann mir jemand den richtigen Weg/Befehl zum Extrahieren/Konvertieren des Zertifikats .crt und der privaten Schlüsseldateien .key aus einer Datei .pem mitteilen? Ich habe gerade gelesen, dass sie austauschbar sind, aber nicht wie.

294
Lanbo

Ich konnte PEM in CRT konvertieren mit diesem:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
417
C.B.

Konvertieren mit OpenSSL

Mit diesen Befehlen können Sie Zertifikate und Schlüssel in verschiedene Formate konvertieren, um sie mit bestimmten Server- oder Softwaretypen kompatibel zu machen.

  • Konvertieren Sie eine DER-Datei (.crt .cer .der) in PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  • Konvertieren Sie eine PEM-Datei in DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Konvertieren Sie eine 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.
    
  • Konvertieren einer PEM-Zertifikatdatei 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
    
  • Konvertieren von PEM in CRT (CRT-Datei)

    openssl x509 -outform der -in certificate.pem -out certificate.crt
    

OpenSSL Convert PEM

  • Umwandlung von PEM in DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Konvertieren Sie PEM in P7B

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    
  • Konvertieren Sie PEM in PFX

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    

OpenSSL Convert DER

  • Umwandlung von DER in PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    

OpenSSL Convert P7B

  • Konvertieren Sie P7B in PEM

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
  • Konvertieren Sie P7B in PFX

    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

  • Konvertieren Sie PFX in PEM

    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    

Generiere RSA-Schlüssel mit OpenSSL

  • Wenn Sie OpenSSL in der Befehlszeile verwenden, die Sie zuerst zum Generieren eines öffentlichen und privaten Schlüssels benötigen, sollten Sie diese Datei mit dem Argument -passout kennwortschützen. Es gibt viele verschiedene Formen, die dieses Argument annehmen kann. Lesen Sie hierzu die OpenSSL-Dokumentation.

    openssl genrsa -out private.pem 1024
    
  • Dadurch wird eine Schlüsseldatei mit dem Namen private.pem erstellt, die 1024 Bit verwendet. Diese Datei enthält sowohl den privaten als auch den öffentlichen Schlüssel. Daher sollten Sie den öffentlichen Schlüssel aus dieser Datei extrahieren:

    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 jetzt public.pem, das nur Ihren öffentlichen Schlüssel enthält. Sie können diesen frei mit Dritten teilen. Sie können alles testen, indem Sie einfach etwas mit Ihrem öffentlichen Schlüssel verschlüsseln und dann mit Ihrem privaten Schlüssel entschlüsseln. Zuerst benötigen wir ein paar Daten zum Verschlüsseln:

  • Beispieldatei:

    echo 'too many secrets' > file.txt
    
  • Sie haben jetzt einige Daten in der Datei file.txt und können diese mit OpenSSL und dem öffentlichen Schlüssel verschlüsseln:

    openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    
  • Auf diese Weise wird eine verschlüsselte Version von file.txt erstellt, die file.ssl heißt. Wenn Sie sich diese Datei ansehen, handelt es sich nur um binären Müll, der für niemanden sehr nützlich ist. Jetzt können Sie es mit dem privaten Schlüssel entschlüsseln:

    openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    
  • Sie haben jetzt eine unverschlüsselte Datei in decrypted.txt:

    cat decrypted.txt
    |output -> too many secrets
    

RSA TOOLS-Optionen in OpenSSL

  • NAME

    rsa - RSA-Schlüsselverarbeitungstool

  • 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]

  • DESCRIPTION

    Der Befehl rsa verarbeitet RSA-Schlüssel. Sie können zwischen verschiedenen Formularen konvertiert und deren 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
    

    Nutzungsnachricht ausdrucken.

    -inform DER|NET|PEM
    

    Dies gibt das Eingabeformat an. Die DER-Option verwendet eine ASN1 DER-codierte 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, das mit zusätzlichen Kopf- und Fußzeilen codiert ist. Bei der Eingabe im PKCS # 8-Format werden auch private Schlüssel akzeptiert. Das NET-Formular ist ein Format, das im Abschnitt ANMERKUNGEN beschrieben wird.

    -outform DER|NET|PEM
    

    Dies gibt das Ausgabeformat an. Die Optionen haben dieselbe Bedeutung wie die Option -inform.

    -in filename
    

    Dies gibt den Eingabedateinamen an, aus dem 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. Weitere Informationen zum Format von arg finden Sie im Abschnitt PASS PHRASE ARGUMENTS in openssl.

    -out filename
    

    Dies gibt den Ausgabedateinamen an, in den ein Schlüssel geschrieben werden soll, oder die Standardausgabe, wenn diese Option nicht angegeben ist. Wenn Verschlüsselungsoptionen festgelegt sind, werden Sie zur Eingabe einer Passphrase aufgefordert. Der Ausgabedateiname sollte nicht mit dem Eingabedateinamen identisch sein.

    -passout password
    

    die Kennwortquelle der Ausgabedatei. Weitere Informationen zum 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 Verschlüsselung, bevor sie ausgegeben werden. Es wird eine Passphrase abgefragt. Wenn keine dieser Optionen angegeben ist, wird der Schlüssel in Klartext geschrieben. Dies bedeutet, dass Sie mit dem Dienstprogramm rsa einen verschlüsselten Schlüssel ohne Verschlüsselungsoption einlesen können, um die Passphrase von einem Schlüssel zu entfernen, oder indem Sie die Verschlüsselungsoptionen festlegen, mit denen die Passphrase hinzugefügt oder geändert werden kann. Diese Optionen können nur mit Ausgabedateien im PEM-Format verwendet werden.

    -text
    

    druckt die verschiedenen öffentlichen oder privaten Schlüsselkomponenten zusätzlich zur verschlüsselten Version im Klartext aus.

    -noout
    

    diese Option verhindert die Ausgabe der verschlüsselten Version des Schlüssels.

    -modulus
    

    diese Option gibt den Wert des Moduls der Taste aus.

    -check
    

    diese Option überprüft die Konsistenz eines privaten RSA-Schlüssels.

    -pubin
    

    standardmäßig wird ein privater Schlüssel aus der Eingabedatei gelesen: Bei dieser Option wird stattdessen ein öffentlicher Schlüssel gelesen.

    -pubout
    

    standardmäßig wird ein privater Schlüssel ausgegeben: Bei dieser Option wird stattdessen ein öffentlicher Schlüssel ausgegeben. Diese Option wird automatisch festgelegt, 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
    

    das Angeben einer Engine (anhand ihrer eindeutigen ID-Zeichenfolge) veranlasst rsa, einen Funktionsverweis auf die angegebene Engine abzurufen und diese bei Bedarf zu initialisieren. Die Engine wird dann als Standard für alle verfügbaren Algorithmen festgelegt.

  • NOTIZEN

    Das private PEM-Schlüsselformat verwendet die Kopf- und Fußzeilen:

    -----BEGIN RSA PRIVATE KEY-----
    
    -----END RSA PRIVATE KEY-----
    

    Das PEM-Public-Key-Format 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-----
    

    Das NET-Formular ist ein Format, das mit älteren Netscape-Servern und Microsoft IIS .key-Dateien kompatibel ist. Für die Verschlüsselung wird ungesalzene RC4 verwendet. Es ist nicht sehr sicher und sollte daher nur bei Bedarf verwendet werden.

    Einige neuere Versionen von IIS enthalten zusätzliche Daten in den exportierten .key-Dateien. Um diese mit dem Dienstprogramm zu verwenden, zeigen Sie die Datei mit einem Binäreditor an und suchen Sie nach der Zeichenfolge "private-key". Gehen Sie dann zur Byte-Sequenz 0x30, 0x82 zurück (dies ist eine ASN1-Sequenz). Kopieren Sie alle Daten ab diesem Zeitpunkt 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 auf einem privaten RSA-Schlüssel:

     openssl rsa -in key.pem -out keyout.pem
    

    So verschlüsseln Sie einen privaten Schlüssel mit Triple DES:

     openssl rsa -in key.pem -des3 -out keyout.pem
    

    So konvertieren Sie einen privaten Schlüssel von PEM in das DER-Format:

      openssl rsa -in key.pem -outform DER -out keyout.der
    

    So drucken Sie die Komponenten eines privaten Schlüssels für die Standardausgabe aus:

      openssl rsa -in key.pem -text -noout
    

    So geben Sie einfach den öffentlichen Teil eines privaten Schlüssels aus:

      openssl rsa -in key.pem -pubout -out pubkey.pem
    

    Den öffentlichen Teil eines privaten Schlüssels im RSAPublicKey-Format ausgeben:

      openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    
314
evergreen

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, um den Schlüssel zu extrahieren ...

openssl rsa -in foo.pem -out foo.key

Extrahieren Sie alle Zertifikate, einschließlich der CA-Kette

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

Extrahieren Sie das textuell erste Zertifikat als DER

openssl x509 -in foo.pem -outform DER -out first-cert.der
33
Highway of Life