Converti .pem in .crt e .key


Risposte:


502

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

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

13
L'uso di un editor di testo non è l'approccio migliore. Per estrarre la chiave in formato PKCS8: openssl pkey -in mumble.pem -out mumble-key.pem Se la versione di OpenSSL è precedente alla 1.0.0, per estrarre la chiave come chiave RSA:openssl rsa -in mumble.pem -out mumble-key.pem
Andron,

131
Ho provato il tuo comando ma ho avuto:unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Damien Carol

15
il comando chiave (openssl pkey -in mumble.pem -out mumble-key.pem) fornisce questo: impossibile caricare la chiave 129051320116880: errore: 0906D06C: routine PEM: PEM_read_bio: nessuna linea di partenza: pem_lib.c: 703: in attesa: ANY CHIAVE PRIVATA
mylord

2
openssl rsa -in your-cert.pem -outform pem -out your-key.pem
troyfolger

3
@Andron sia pkey che rsa mi danno Expecting: ANY PRIVATE KEYerrore.
Aero Wang,

394

Conversione mediante 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 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.
    
  • 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

  • Convertire PEM in DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Convertire 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 Converti P7B

  • Convertire P7B in PEM

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

  • Convertire PFX in PEM

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

Genera chiavi rsa da OpenSSL

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

    openssl genrsa -out private.pem 1024
    
  • Questo crea un file chiave chiamato private.pem che utilizza 1024 bit. Questo file ha effettivamente sia le chiavi private che pubbliche, quindi dovresti estrarre quella pubblica 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 condividerlo liberamente con terze parti. Puoi testare tutto semplicemente crittografando qualcosa tu stesso utilizzando la tua chiave pubblica e quindi decrittografando utilizzando la tua chiave privata, prima abbiamo bisogno di un po 'di dati per crittografare:

  • File di esempio:

    echo 'too many secrets' > file.txt
    
  • Ora hai alcuni dati in file.txt, consente di crittografarli utilizzando 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 chiamandolo file.ssl, se guardi questo file è solo spazzatura binaria, niente di molto utile per nessuno. Ora puoi decodificarlo usando la chiave privata:

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

    cat decrypted.txt
    |output -> too many secrets
    

RSA TOOLS 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 forme e i loro componenti stampati. Nota: questo comando utilizza il tradizionale formato compatibile SSLeay per la crittografia della chiave privata: le applicazioni più recenti 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 RSAPrivateKey PKCS # 1 o SubjectPublicKeyInfo. Il modulo PEM è il formato predefinito: è costituito dal formato DER base64 codificato con righe di intestazione e piè di pagina aggiuntive. Su input vengono accettate anche le chiavi private in formato PKCS # 8. 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
    

    Questo specifica il nome file di input da cui leggere una chiave o input standard se questa opzione non è specificata. Se la chiave è crittografata, verrà richiesta una passphrase.

    -passin arg
    

    l'origine della password del file di input. Per maggiori informazioni sul formato di arg, consultare la sezione PASS PHRASE ARGUMENTS in openssl.

    -out filename
    

    Questo specifica il nome del file di output in cui scrivere una chiave o l'output standard se questa opzione non è specificata. Se vengono impostate opzioni di crittografia, verrà richiesta una passphrase. Il nome file di output non deve essere uguale al nome file di input.

    -passout password
    

    l'origine della password del file di output. Per maggiori informazioni sul formato di arg, consultare la sezione PASS PHRASE ARGUMENTS in openssl.

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

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

    -text
    

    stampa i vari componenti della chiave pubblica o privata in testo semplice oltre alla versione codificata.

    -noout
    

    questa opzione impedisce l'output della versione codificata della chiave.

    -modulus
    

    questa opzione stampa il valore del modulo della chiave.

    -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
    

    di default 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 tranne il formato RSAPublicKey è invece usato.

    -engine id
    

    la specifica di un motore (mediante la sua stringa ID univoca) provocherà rsa per tentare di ottenere un riferimento funzionale al motore specificato, inizializzandolo quindi se necessario. Il motore verrà quindi impostato come predefinito per tutti gli algoritmi disponibili.

  • 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 server Netscape precedenti e file .key di Microsoft IIS, che utilizza RC4 non salato per la sua crittografia. Non è molto sicuro e quindi dovrebbe essere usato solo quando necessario.

    Alcune versioni più recenti di IIS contengono dati aggiuntivi nei file .key esportati. Per usarli con l'utilità, visualizzare il file con un editor binario e cercare la stringa "chiave privata", quindi risalire alla sequenza di byte 0x30, 0x82 (questa è una SENENZA ASN1). Copiare tutti i dati da questo punto in poi in un altro file e usarli come input per l'utilità rsa con l'opzione NET -inform.

    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 dal formato PEM al formato DER:

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

    Per stampare i componenti di una chiave privata sull'output standard:

      openssl rsa -in key.pem -text -noout
    

    Per generare semplicemente la parte pubblica di una chiave privata:

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

    Output della parte pubblica di una chiave privata nel formato RSAPublicKey:

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

32
Tuttavia, questo non risponde alla domanda su come ottenere la chiave privata dal certificato binario (esportato).
bbaassssiiee,

grazie, chiedendosi se ho una PEM contenente una chiave privata e certificati, come posso ottenere solo i certificati? So che posso copiare la parte dei certificati da esso usando l'editor di testo, ma voglio sapere se c'è qualche comando openssl, grazie
workplaylifecycle

46

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

Estrai 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 testualmente come DER

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

7
openssl x509 -outform der -in C: \ Users \ Greg \ .ssh \ e360_stork_listener.pem -out C: \ Users \ Greg \ .ssh \ e360_stork_listener.crt impossibile caricare il certificato 4294956672: errore: 0906D06C: routine PEM: PEM_read_bio: nessuna linea di partenza: pem_lib.c: 708: in attesa: CERTIFICATO DI
FIDUCIA

5

0. Prerequisito : openssl deve essere installato. Su Windows, se Git Bashinstallato, provalo! I binari alternativi sono disponibili qui.

1. Estratto .keyda .pem:

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

2. Estratto .crtda .pem:

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

1

Un .crt memorizza il certificato .. in formato pem. Quindi un .pem, mentre può avere anche altre cose come un csr (richiesta di firma del certificato), una chiave privata, una chiave pubblica o altri certificati, quando memorizza solo un certificato, è la stessa cosa di un .crt.

Un pem è un file codificato di base 64 con un'intestazione e un piè di pagina tra ciascuna sezione.

Per estrarre una sezione particolare, uno script perl come il seguente è totalmente valido, ma sentiti libero di usare alcuni dei comandi openssl.

 perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem

dove == 1 può essere modificato in qualsiasi sezione di cui hai bisogno. Ovviamente se conosci esattamente l'intestazione e il piè di pagina di cui hai bisogno e ce n'è solo uno nel file (di solito il caso se mantieni solo il certificato e la chiave), puoi semplificarlo:

 perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem

0

Se hai posto questa domanda perché stai usando, mkcertil trucco è che il .pemfile è il certificato e il -key.pemfile è la chiave.

(Non è necessario convertire, basta eseguire mkcert yourdomain.dev otherdomain.dev)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.