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:
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