Converti .pem in .crt e .key

Qualcuno può dirmi il modo corretto / comando per estrarre / convertire il certificato. .crt e la chiave privata .key file da un file .pem ? Ho appena letto che sono intercambiabili, ma non come.

Sono stato in grado di convertire pem in crt usando questo:

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

Conversione usando OpenSSL

Questi comandi consentono di convertire certificati e chiavi in ​​diversi formati per renderli compatibili con tipi specifici di server o software.

  • Convertire un file DER (.crt .cer .der) in PEM

     openssl x509 -inform der -in certificate.cer -out certificate.pem 
  • Convertire un file PEM in DER

     openssl x509 -outform der -in certificate.pem -out certificate.der 
  • Convertire un file PKCS # 12 (.pfx .p12) contenente una chiave privata e certificati per 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. 
  • Convertire un file di certificato PEM e una chiave privata in PKCS # 12 (.pfx .p12)

     openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt 
  • Converti PEM in CRT (file .CRT)

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

OpenSSL Converti PEM

  • Converti PEM in DER

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

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

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

OpenSSL Converti DER

  • Converti DER in PEM

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

OpenSSL Convert P7B

  • Convertire P7B in PEM

     openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer 
  • Converti 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 Converti PFX

  • Converti PFX in PEM

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

Genera chiavi Rsa con OpenSSL

  • Usando OpenSSL sulla riga di comando dovresti prima generare una chiave pubblica e privata, dovresti proteggere con password questo file usando l’argomento -passout, ci sono molte forms diverse che questo argomento può prendere, consulta la documentazione di OpenSSL a riguardo.

     openssl genrsa -out private.pem 1024 
  • Questo crea un file chiave chiamato private.pem che usa 1024 bit. Questo file ha in realtà entrambe le chiavi private e pubbliche, quindi devi estrarre quello pubblico da questo file:

     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 

    Ora avrai public.pem contenente solo la tua chiave pubblica, puoi condividerla liberamente con terze parti. Puoi testare tutto semplicemente crittografando qualcosa tu stesso usando la tua chiave pubblica e poi decifrando usando la tua chiave privata, prima abbiamo bisogno di un po ‘di dati da crittografare:

  • File di esempio:

     echo 'too many secrets' > file.txt 
  • Ora disponi di alcuni dati in file.txt, li criptiamo usando OpenSSL e la chiave pubblica:

     openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl 
  • Questo crea una versione crittografata di file.txt che la chiama file.ssl, se si guarda a questo file è solo una spazzatura binaria, nulla di molto utile a nessuno. Ora puoi decrittografarlo usando la chiave privata:

     openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt 
  • Ora avrai un file non criptato in decrypted.txt:

     cat decrypted.txt |output -> too many secrets 

STRUMENTI RSA Opzioni in OpenSSL

  • NOME

    rsa – Strumento di elaborazione delle chiavi RSA

  • SINOSSI

    openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in nomefile] [-passin arg] [-out nomefile] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]

  • DESCRIZIONE

    Il comando rsa elabora le chiavi RSA. Possono essere convertiti tra varie forms e i loro componenti stampati. Nota questo comando utilizza il tradizionale formato compatibile con SSLeay per la crittografia a chiave privata: le nuove applicazioni dovrebbero utilizzare il formato PKCS # 8 più sicuro utilizzando l’utilità pkcs8.

  • OPZIONI DI COMANDO

     -help 

    Stampa un messaggio di utilizzo.

     -inform DER|NET|PEM 

    Questo specifica il formato di input. L’opzione DER utilizza un modulo codificato DER ASN1 compatibile con il formato PKCS # 1 RSAPrivateKey o SubjectPublicKeyInfo. Il modulo PEM è il formato predefinito: consiste nel formato DER 64 codificato con linee di intestazione e piè di pagina aggiuntive. Su input PKCS # 8 sono accettate anche le chiavi private. Il modulo NET è un formato descritto nella sezione NOTE.

     -outform DER|NET|PEM 

    Questo specifica il formato di output, le opzioni hanno lo stesso significato dell’opzione -inform.

     -in filename 

    Specifica il nome file di input per leggere una chiave o uno standard input se questa opzione non è specificata. Se la chiave è crittografata, verrà richiesta una passphrase.

     -passin arg 

    la fonte della password del file di input. Per ulteriori informazioni sul formato di arg, consultare la sezione PASS ARGOMENTI DI PHRASE in openssl.

     -out filename 

    Specifica il nome file di output per scrivere una chiave o uno standard output se questa opzione non è specificata. Se sono impostate opzioni di crittografia, verrà richiesta una passphrase. Il nome file di output non dovrebbe essere lo stesso del nome file di input.

     -passout password 

    la fonte della password del file di output. Per ulteriori informazioni sul formato di arg, consultare la sezione PASS ARGOMENTI DI PHRASE in openssl.

     -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea 

    Queste opzioni crittografano la chiave privata con la cifra specificata prima di emetterla. Viene richiesta una passphrase. Se nessuna di queste opzioni è specificata, la chiave è scritta in testo normale. Ciò significa che è ansible utilizzare l’utilità rsa per leggere in una chiave crittografata senza opzione di crittografia per rimuovere la pass phrase da una chiave o impostando le opzioni di crittografia che possono essere utilizzate per aggiungere o modificare la passphrase. Queste opzioni possono essere utilizzate solo con i file di output in formato PEM.

     -text 

    oltre alla versione codificata stampa i vari componenti chiave pubblici o privati ​​in testo semplice.

     -noout 

    questa opzione impedisce l’uscita della versione codificata della chiave.

     -modulus 

    questa opzione stampa il valore del modulo del tasto.

     -check 

    questa opzione controlla la coerenza di una chiave privata RSA.

     -pubin 

    per impostazione predefinita viene letta una chiave privata dal file di input: con questa opzione viene invece letta una chiave pubblica.

     -pubout 

    per impostazione predefinita viene emessa una chiave privata: con questa opzione verrà invece emessa una chiave pubblica. Questa opzione viene impostata automaticamente se l’input è una chiave pubblica.

     -RSAPublicKey_in, -RSAPublicKey_out 

    come -pubin e -pubout eccetto il formato RSAPublicKey.

     -engine id 

    la specificazione di un motore (mediante la sua stringa id univoca) farà sì che rsa tenti di ottenere un riferimento funzionale al motore specificato, inizializzandolo quindi se necessario. Il motore verrà quindi impostato come predefinito per tutti gli algoritmi disponibili.

  • GLI APPUNTI

    Il formato della chiave privata PEM utilizza le righe di intestazione e piè di pagina:

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

    Il formato della chiave pubblica PEM utilizza le righe di intestazione e piè di pagina:

     -----BEGIN PUBLIC KEY----- -----END PUBLIC KEY----- 

    Il formato PEM RSAPublicKey utilizza le righe di intestazione e piè di pagina:

     -----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY----- 

    Il modulo NET è un formato compatibile con i vecchi server Netscape e i file .key di Microsoft IIS, utilizza RC4 non salato per la sua crittografia. Non è molto sicuro e quindi dovrebbe essere usato solo se necessario.

    Alcune versioni più recenti di IIS contengono dati aggiuntivi nei file .key esportati. Per utilizzarli con l’utilità, visualizzare il file con un editor binario e cercare la stringa “private-key”, quindi tracciare nuovamente la sequenza di byte 0x30, 0x82 (questa è una SEQUENZA ASN1). Copiare tutti i dati da questo punto in poi in un altro file e utilizzarlo come input per l’utility rsa con l’opzione -inform NET.

    ESEMPI

    Per rimuovere la passphrase su una chiave privata RSA:

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

    Per crittografare una chiave privata utilizzando il triplo DES:

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

    Per convertire una chiave privata da PEM in formato DER:

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

    Per stampare i componenti di una chiave privata sullo standard output:

      openssl rsa -in key.pem -text -noout 

    Per emettere solo la parte pubblica di una chiave privata:

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

    Emetti la parte pubblica di una chiave privata nel formato RSAPublicKey:

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

Per estrarre la chiave e il certificato da un file PEM:

Estrai la chiave

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

Un altro metodo per estrarre la chiave …

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

Estrarre tutti i certificati, inclusa la catena CA.

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

Estrai il primo certificato testuale come DER

 openssl x509 -in foo.pem -outform DER -out first-cert.der