Qualcuno può dirmi il modo/comando corretto per estrarre/convertire i file del certificato .crt
e della chiave privata .key
da un file .pem
? Ho appena letto che sono intercambiabili, ma non come.
Conversione con OpenSSL Questi comandi permettono di convertire certificati e chiavi in diversi formati per renderli compatibili con specifici tipi 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
Converte un file PKCS#12 (.pfx .p12) contenente una chiave privata e certificati in PEM openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes Puoi aggiungere -nocerts per produrre solo la chiave privata o aggiungere -nokeys per produrre solo i certificati.
Convertire un file 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
Convertire PEM in CRT (file .CRT) openssl x509 -outform der -in certificate.pem -out certificate.crt OpenSSL Convertire 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
Convertire PEM in PFX openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt OpenSSL Convertire DER
Convertire DER in PEM openssl x509 -inform der -in certificate.cer -out certificate.pem OpenSSL Convertire P7B
Converte 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 Convertire PFX
Convertire PFX in PEM openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes Generare chiavi rsa da OpenSSL
Usando OpenSSL sulla linea di comando dovreste prima generare una chiave pubblica e privata, dovreste proteggere con password questo file usando l'argomento -passout, ci sono molte forme diverse che questo argomento può assumere quindi consultate la documentazione di OpenSSL. openssl genrsa -out private.pem 1024
Questo crea un file chiave chiamato private.pem che usa 1024 bit. Questo file in realtà ha sia la chiave privata che quella pubblica, quindi dovresti estrarre quella pubblica da questo file: openssl rsa -in private.pem -out public.pem -outform PEM -pubout oppure
openssl rsa -in private.pem -pubout > public.pem
o
openssl rsa -in private.pem -pubout -out public.pem
Ora avrete public.pem contenente solo la vostra chiave pubblica, potete liberamente condividerla con terze parti. Potete testare il tutto semplicemente criptando qualcosa voi stessi usando la vostra chiave pubblica e poi decriptando usando la vostra chiave privata, prima abbiamo bisogno di un po' di dati da criptare:
Esempio di file : echo 'troppi segreti' > file.txt
Ora avete dei dati in file.txt, cifriamoli usando OpenSSL e la chiave pubblica: openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
Questo crea una versione criptata di file.txt chiamandola file.ssl, se guardate questo file è solo spazzatura binaria, niente di molto utile a nessuno. Ora potete decifrarlo usando la chiave privata: openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
Ora avrete un file non criptato in decrypted.txt: cat decrypted.txt |output -> troppi segreti Opzioni RSA TOOLS in OpenSSL
NOME rsa -> strumento di elaborazione delle chiavi RSA
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]
DESCRIZIONE Il comando rsa elabora le chiavi RSA. Esse possono essere convertite tra varie forme e i loro componenti stampati. Si noti che questo comando usa il tradizionale formato compatibile con SSLeay per la crittografia delle chiavi private: le applicazioni più recenti dovrebbero usare il più sicuro formato PKCS#8 usando l'utilità pkcs8.
OPZIONI DEL COMANDO** -help stampa un messaggio d'uso. -inform DER|NET|PEM Questo specifica il formato di input. L'opzione DER usa una forma codificata ASN1 DER compatibile con il formato PKCS#1 RSAPrivateKey o SubjectPublicKeyInfo. La forma PEM è il formato predefinito: consiste nel formato DER codificato in base64 con linee aggiuntive di intestazione e piè di pagina. In ingresso sono accettate anche chiavi private in formato PKCS#8. La forma NET è un formato è descritto nella sezione NOTE. -formato DER|NET|PEM Questo specifica il formato di output, le opzioni hanno lo stesso significato dell'opzione -inform. -in filename
Questo specifica il nome del file di input da cui leggere una chiave o lo standard input se questa opzione non è specificata. Se la chiave è criptata verrà richiesta una frase di passaggio. -passin arg l'origine della password del file di input. Per maggiori informazioni sul formato di arg si veda la sezione PASS PHRASE ARGUMENTS in openssl. -out filename Questo specifica il nome del file di output su cui scrivere una chiave o lo standard output se questa opzione non è specificata. Se qualsiasi opzione di crittografia è impostata, allora verrà richiesta una frase di passaggio. Il nome del file di output non dovrebbe essere lo stesso del nome del file di input. -passout password l'origine della password del file di output. Per maggiori informazioni sul formato di arg vedi la sezione PASS PHRASE ARGUMENTS in openssl. -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea Queste opzioni criptano la chiave privata con il cifrario specificato prima di pubblicarla. Viene richiesta una frase d'accesso. Se nessuna di queste opzioni è specificata, la chiave viene scritta in chiaro. Questo significa che usando l'utilità rsa per leggere una chiave criptata senza alcuna opzione di cifratura può essere usata per rimuovere la frase d'accesso da una chiave, o impostando le opzioni di cifratura può essere usata per aggiungere o cambiare la frase d'accesso. Queste opzioni possono essere usate solo con i file di output in formato PEM. -testo 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. -modulo questa opzione stampa il valore del modulo della chiave. -check questa opzione controlla la consistenza di una chiave privata RSA. -pubin di default 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 viene invece emessa una chiave pubblica. Questa opzione è impostata automaticamente se l'input è una chiave pubblica. -RSAPublicKey_in, -RSAPublicKey_out come -pubin e -pubout, eccetto che viene usato il formato RSAPublicKey. -engine id specificando un motore (tramite la sua stringa id unica) farà sì che rsa tenti di ottenere un riferimento funzionale al motore specificato, inizializzandolo se necessario. Il motore sarà quindi impostato come predefinito per tutti gli algoritmi disponibili.
NOTE Il formato della chiave privata PEM utilizza le linee di intestazione e di piè di pagina: -----BEGIN RSA PRIVATE KEY----- -----FINE CHIAVE PRIVATA RSA----- Il formato della chiave pubblica PEM usa le righe di intestazione e piè di pagina: -----BEGIN CHIAVE PUBBLICA----- -----FINE CHIAVE PUBBLICA----- Il formato PEM RSAPublicKey usa le righe di intestazione e piè di pagina: -----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY----- Il formato NET è un formato compatibile con i vecchi server Netscape e i file .key di Microsoft IIS, questo usa RC4 non salato per la sua crittografia. Non è molto sicuro e quindi dovrebbe essere usato solo quando necessario. Alcune versioni più recenti di IIS hanno dati aggiuntivi nei file .key esportati. Per usarli con l'utility, visualizza il file con un editor binario e cerca la stringa "private-key", poi risali alla sequenza di byte 0x30, 0x82 (questa è una SEQUENZA ASN1). Copiate tutti i dati da questo punto in poi in un altro file e usatelo come input per l'utilità rsa con l'opzione -inform NET. ESEMPI** Per rimuovere la pass phrase su una chiave privata RSA: openssl rsa -in key.pem -out keyout.pem Per crittografare una chiave privata usando 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 -out form DER -out keyout.der Per stampare i componenti di una chiave privata sullo standard output: openssl rsa -in key.pem -text -noout Per stampare solo la parte pubblica di una chiave privata: openssl rsa -in key.pem -pubout -out pubkey.pem Emettere la parte pubblica di una chiave privata in 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