Qualcuno può dirmi il modo / comando corretto per estrarre / convertire i file del certificato .crt
e della chiave privata .key
da un .pem
file? Ho appena letto che sono intercambiabili, ma non come.
Qualcuno può dirmi il modo / comando corretto per estrarre / convertire i file del certificato .crt
e della chiave privata .key
da un .pem
file? Ho appena letto che sono intercambiabili, ma non come.
Risposte:
Sono stato in grado di convertire pem in crt usando questo:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
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
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
errore.
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
Per estrarre la chiave e il certificato da un file pem:
openssl pkey -in foo.pem -out foo.key
Un altro metodo per estrarre la chiave ...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der
0. Prerequisito : openssl
deve essere installato. Su Windows, se Git Bash
installato, provalo! I binari alternativi sono disponibili qui.
1. Estratto .key
da .pem
:
openssl pkey -in cert.pem -out cert.key
2. Estratto .crt
da .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
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