OpenSSL è uno strumento versatile per generare chiavi private, creare richieste di firma del certificato (CSR) e gestire certificati SSL/TLS. Questo articolo tratterà come identificare la versione di OpenSSL, utilizzare i comandi OpenSSL più comuni e seguire le migliori pratiche per proteggere le tue chiavi e i tuoi certificati.
Controllare la Versione di OpenSSL
Identificare la Versione di OpenSSL Usando i Comandi OpenSSL
Identificare quale versione di OpenSSL stai utilizzando è un primo passo importante quando ti prepari a generare una chiave privata o una CSR. La tua versione di OpenSSL determina quali algoritmi crittografici possono essere utilizzati durante la generazione delle chiavi e quali protocolli sono supportati. Ad esempio, la versione 1.0.1 di OpenSSL è stata la prima a supportare TLS 1.1 e TLS 1.2.
Usa il comando openssl version -a per identificare quale versione di OpenSSL stai eseguendo. L'opzione -a mostra informazioni complete sulla versione, tra cui:
- Il numero di versione e la data di rilascio (es. OpenSSL 1.0.2g 1 Mar 2016)
- Le opzioni con cui è stata compilata la libreria
- La directory dove sono memorizzati i certificati e le chiavi private (OPENSSLDIR)
Ecco un esempio di output dall'esecuzione di openssl version -a:
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -
D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-
strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-
Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -
DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -
DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -
DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"
Conoscere la tua versione di OpenSSL è importante per determinare quali algoritmi crittografici e protocolli sono supportati quando generi chiavi e CSR. L'output fornisce dettagli chiave come il numero di versione, le opzioni di compilazione e la directory predefinita per la memorizzazione di certificati e chiavi.
Comandi OpenSSL Comunemente Utilizzati
OpenSSL fornisce molti comandi per generare chiavi private, creare CSR, installare certificati SSL/TLS e identificare le informazioni dei certificati. Ecco alcuni dei comandi OpenSSL più utilizzati:
openssl genrsa: Genera una chiave privata RSA. Esempio:openssl genrsa -out chiaveprivata.key 2048openssl req: Crea una CSR o un certificato autofirmato. Esempio:openssl req -new -key chiaveprivata.key -out csr.csropenssl x509: Mostra le informazioni del certificato, converte i formati e firma le CSR. Esempio:openssl x509 -in cert.crt -text -nooutopenssl pkcs12: Converte tra i formati PFX, PEM e DER. Esempio:openssl pkcs12 -export -out cert.pfx -inkey chiaveprivata.key -in cert.crtopenssl s_client: Stabilisce una connessione sicura con un server remoto. Esempio:openssl s_client -connect esempio.com:443
Questi comandi ti permettono di eseguire compiti importanti come generare chiavi private robuste, creare CSR con le informazioni necessarie, installare e configurare certificati SSL/TLS e individuare problemi.
Struttura dei Comandi OpenSSL e Opzioni
La maggior parte dei comandi OpenSSL segue una struttura coerente:
openssl comando [opzioni] [argomenti]
comandospecifica l'operazione da eseguire, comegenrsa,req, ox509.[opzioni]modificano il comportamento del comando. Le opzioni di solito iniziano con un trattino (-) e possono avere un valore.[argomenti]forniscono informazioni aggiuntive necessarie al comando, come i percorsi dei file di input e output.
Alcune opzioni comunemente utilizzate includono:
-in: Specifica il percorso del file di input.-out: Specifica il percorso del file di output.-keyout: Specifica il percorso dove scrivere la nuova chiave privata.-pubout: Restituisce la chiave pubblica di una chiave privata o CSR.-text: Stampa il contenuto di un certificato in formato testo leggibile.-noout: Impedisce l'output dei dati codificati del certificato.
Per esempio, il comando openssl x509 -in cert.crt -text -noout usa il comando x509 per mostrare le informazioni del certificato in testo leggibile senza mostrare i dati codificati.
Imparare queste strutture dei comandi OpenSSL e le opzioni comunemente utilizzate ti aiuterà a usare efficacemente OpenSSL per le tue esigenze di certificati SSL/TLS.
Generare Chiavi Private e CSR Usando OpenSSL
Scegliere le Opzioni di Generazione delle Chiavi
Quando crei una chiave privata per il tuo certificato SSL/TLS, devi scegliere tra gli algoritmi di chiave RSA e ECDSA. RSA è ampiamente supportato e consigliato per la compatibilità. Devi anche scegliere una dimensione della chiave di almeno 2048 bit per RSA o 256 bit per ECDSA. Dimensioni delle chiavi più grandi offrono maggiore sicurezza ma potrebbero influire sulle prestazioni.
Un'altra scelta è se utilizzare una passphrase per crittografare la chiave privata. L'uso di una passphrase aggiunge un ulteriore livello di sicurezza, ma richiede di inserirla ogni volta che la chiave viene utilizzata. Le passphrase possono essere utili se la chiave potrebbe essere esposta ad accessi non autorizzati.
Creare la Tua Chiave Privata Usando i Comandi OpenSSL
Per creare una chiave privata RSA da 2048 bit, usa il comando:
openssl genrsa -out tuodominio.key 2048
Questo crea un file di chiave privata chiamato tuodominio.key nel formato PEM. Puoi visualizzare il contenuto grezzo e codificato della chiave con:
cat tuodominio.key
Oppure decodificarlo per visualizzare i dettagli della chiave con:
openssl rsa -text -in tuodominio.key -noout
Ottenere la Tua Chiave Pubblica dalla Chiave Privata
Il file di chiave privata creato contiene sia la chiave privata che quella pubblica. Se necessario, puoi estrarre solo la chiave pubblica usando:
openssl rsa -in tuodominio.key -pubout -out tuodominio_pubblica.key
Questo crea un file chiamato tuodominio_pubblica.key con la chiave pubblica in formato PEM.
Creare la Tua CSR
Per creare una Richiesta di Firma del Certificato (CSR) utilizzando la tua chiave privata, usa:
openssl req -new -key tuodominio.key -out tuodominio.csr
Questo ti chiederà di rispondere a domande sulla tua azienda e dominio da includere nella CSR. Oppure, puoi fornire tutti i dettagli della CSR nel comando utilizzando l'opzione -subj:
openssl req -new -key tuodominio.key -out tuodominio.csr \
-subj "/C=IT/ST=Roma/L=Roma/O=La Tua Azienda/OU=IT/CN=tuodominio.com"
Puoi anche creare la chiave privata e la CSR insieme in un unico comando:
openssl req -newkey rsa:2048 -keyout tuodominio.key -out tuodominio.csr
Controllare le Informazioni della CSR
Prima di inviare la tua CSR a un'Autorità di Certificazione (CA), verifica che le informazioni siano corrette con:
openssl req -text -in tuodominio.csr -noout -verify
Questo mostra i dettagli della CSR in testo leggibile. Se qualsiasi informazione è errata, devi creare una nuova CSR. I dettagli errati non possono essere modificati senza creare una nuova CSR a causa della firma digitale.
Conoscendo queste opzioni di generazione delle chiavi e i comandi OpenSSL, puoi creare chiavi private robuste e CSR adatte alle tue esigenze di certificati SSL/TLS.
Gestire i Certificati
Visualizzare le Informazioni del Certificato
Dopo aver ricevuto il tuo certificato SSL/TLS dall'autorità di certificazione (CA), dovresti verificare che i dettagli del certificato corrispondano alla tua chiave privata. Usa questo comando per visualizzare il contenuto del tuo certificato:
openssl x509 -text -in tuodominio.crt -noout
Questo mostra le informazioni del certificato in testo leggibile senza i dati codificati. Guarda la sezione Subject Public Key Info per vedere i dettagli della chiave pubblica. Assicurati che corrispondano alla chiave pubblica nei tuoi file di CSR e chiave privata.
Verificare che le Tue Chiavi Corrispondano
Per controllare che la chiave privata del tuo certificato, la CSR e il certificato emesso abbiano tutti la stessa chiave pubblica, puoi estrarre la chiave pubblica da ciascun file e generarne un hash. Se gli hash corrispondono, le chiavi sono le stesse.
Usa questi comandi per ottenere l'hash della chiave pubblica per ciascun file:
openssl pkey -pubout -in tuodominio.key | openssl sha256
openssl req -pubkey -in tuodominio.csr -noout | openssl sha256
openssl x509 -pubkey -in tuodominio.crt -noout | openssl sha256
Esegui ogni comando separatamente per ottenere tre hash. Se tutti gli hash sono uguali, le chiavi pubbliche corrispondono tra la tua chiave privata, CSR e certificato.
Se gli hash non corrispondono, spesso significa che la CSR è stata creata su una macchina diversa da quella su cui viene installato il certificato. Per risolvere le discrepanze delle chiavi, puoi:
- Spostare la chiave privata dalla macchina CSR alla macchina del certificato
- Installare il certificato sulla macchina che ha la chiave privata corrispondente
- Creare una nuova chiave privata e CSR sulla macchina che utilizzerà il certificato
Convertire i Formati dei Certificati
Di default, OpenSSL crea chiavi private e CSR nel formato PEM. Ma potrebbe essere necessario convertirli in altri formati come PKCS#12 o DER per determinati sistemi.
Per convertire un certificato PEM e una chiave privata in un file PKCS#12 (.pfx o .p12) per il trasferimento:
openssl pkcs12 -export -name "tuodominio-digicert-(data di scadenza)" \
-out tuodominio.pfx -inkey tuodominio.key -in tuodominio.crt
Questo combina la tua chiave privata tuodominio.key e il certificato tuodominio.crt in un file tuodominio.pfx. L'opzione -name imposta un nome descrittivo che include il dominio e la data di scadenza. Ti verrà chiesto di inserire una password di crittografia per il file .pfx.
Per convertire un file .pfx di nuovo in formato PEM, usa comandi separati per la chiave e il certificato:
openssl pkcs12 -in tuodominio.pfx -nocerts -out tuodominio.key -nodes
openssl pkcs12 -in tuodominio.pfx -nokeys -clcerts -out tuodominio.crt
Il primo comando estrae la chiave privata e il secondo estrae il certificato. L'opzione -nodes rimuove la crittografia della chiave privata.
Per convertire tra i formati PEM e DER, usa i comandi x509 e rsa con le opzioni -inform e -outform:
openssl x509 -inform PEM -in tuodominio.crt -outform DER -out tuodominio.der
openssl rsa -inform PEM -in tuodominio.key -outform DER -out tuodominio_chiave.der
Questi comandi convertono un certificato PEM in DER e una chiave privata PEM in DER. Per passare da DER a PEM, basta scambiare i valori di -inform e -outform.
Utilizzando questi comandi OpenSSL per visualizzare, verificare e convertire i tuoi certificati e chiavi SSL/TLS, puoi gestirli e installarli correttamente sui tuoi server come Apache Tomcat o IIS.
Elencare le Suite di Cifratura
Le suite di cifratura sono insiemi di algoritmi utilizzati per proteggere le connessioni di rete con SSL/TLS. Includono algoritmi di scambio chiavi, autenticazione, crittografia e hash. Per vedere quali suite di cifratura supporta la tua versione di OpenSSL, usa il seguente comando:
openssl ciphers -v
Questo mostra i nomi completi di ogni suite di cifratura supportata. I nomi seguono un formato come:
Protocollo-ScambioChiavi-Autenticazione-Crittografia-Hash
Per esempio, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 usa:
- Protocollo TLS
- Scambio chiavi ECDHE
- Autenticazione RSA
- Crittografia AES-256 in modalità GCM
- Hash SHA384
Conoscere questi elementi di nomenclatura può aiutare a scegliere suite di cifratura che soddisfano le tue esigenze di sicurezza, compatibilità e prestazioni.
Creare e Controllare Hash
Gli hash sono digest unici e di lunghezza fissa creati dai dati. Aiutano a verificare l'integrità di file e messaggi. Usa i comandi OpenSSL per creare hash di chiavi e certificati:
openssl dgst -sha256 tuodominio.key
openssl dgst -sha256 tuodominio.csr
openssl dgst -sha256 tuodominio.crt
Questi creano hash SHA-256 dei tuoi file di chiave privata, CSR e certificato. Puoi cambiare sha256 con altri algoritmi di hash come md5, sha1, o sha512.
Per verificare l'integrità di un file, crea il suo hash e confrontalo con un valore hash noto corretto. Se corrispondono, il file non è stato modificato. Questo viene spesso utilizzato per i download di file per assicurarsi che non siano stati danneggiati o alterati.
Elencando le suite di cifratura supportate e creando hash dei file, puoi meglio proteggere e verificare la tua configurazione SSL/TLS con OpenSSL.
Debugging e Risoluzione dei Problemi
Problemi Comuni di OpenSSL e Loro Soluzioni
Quando lavori con OpenSSL per generare chiavi, creare CSR e installare certificati SSL/TLS, potresti incontrare alcuni problemi comuni. Ecco alcuni problemi e come risolverli:
-
Problemi di installazione e configurazione del certificato: Ricontrolla che i percorsi dei file dei certificati siano corretti nella configurazione del tuo server web. Assicurati che il certificato e la chiave privata siano nei formati corretti (PEM o PKCS#12) richiesti dal tuo server.
-
Discrepanze tra chiave privata e certificato: Verifica che la chiave privata utilizzataper generare la CSR corrisponda a quella utilizzata durante l'installazione del certificato. Confronta gli hash delle chiavi pubbliche nei file della chiave privata, CSR e certificato. Se non corrispondono, rigenera la CSR con la chiave privata corretta.
-
Problemi di permessi e proprietà dei file: Controlla che i file della chiave privata e del certificato abbiano i corretti permessi e proprietà impostati per consentire al processo del server web di leggerli. Ad esempio, su Linux, potrebbe essere necessario impostare i permessi con
chmod 400 tuodominio.keye la proprietà conchown www-data:www-data tuodominio.key. -
Errori dei comandi OpenSSL: Se ricevi errori nell'esecuzione dei comandi OpenSSL, ricontrolla la sintassi, le opzioni e i percorsi dei file. Assicurati di utilizzare i comandi corretti per la tua versione di OpenSSL e che i file siano nei formati giusti.
Identificare le Versioni e le Configurazioni TLS
È importante verificare che il tuo OpenSSL e il server web siano configurati per utilizzare le versioni TLS più recenti e suite di cifratura forti. Ecco come controllare:
-
Controlla il supporto della versione TLS di OpenSSL: Usa il comando
s_clientper vedere la versione TLS utilizzata per una connessione:openssl s_client -connect tuodominio.com:443 -tls1_2Sostituisci
tuodominio.comcon il tuo nome di dominio. L'opzione-tls1_2testa una connessione TLS 1.2. Puoi cambiarla in-tls1,-tls1_1, o-tls1_3per testare altre versioni. Una connessione riuscita significa che quella versione TLS è supportata. -
Verifica la configurazione TLS del tuo server web: Controlla le impostazioni SSL/TLS del tuo server web per assicurarti che sia configurato per utilizzare TLS 1.2 o 1.3 e non versioni vecchie come SSL 3.0 o TLS 1.0. Ad esempio, in Apache potresti vedere impostazioni come:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite HIGH:!aNULL:!MD5Questo disattiva SSL 3.0, TLS 1.0 e TLS 1.1 mentre abilita suite di cifratura di alta resistenza. Controlla la documentazione del tuo server web per le impostazioni di configurazione TLS appropriate.
-
Usa strumenti di test SSL/TLS: Strumenti online come il SSL Labs Server Test possono controllare la configurazione SSL/TLS del tuo server e trovare problemi con il certificato, le versioni del protocollo o le suite di cifratura.
Individuando e risolvendo questi problemi comuni di OpenSSL e assicurandoti di avere una configurazione TLS sicura, puoi meglio debuggare e risolvere i problemi della tua configurazione SSL/TLS per i tuoi domini.
Migliori Pratiche
Gestire in Modo Sicuro le Chiavi Private e i Certificati
Le chiavi private sono la base della tua sicurezza SSL/TLS. È importante generarle, memorizzarle e proteggerle correttamente. Ecco alcune migliori pratiche:
- Genera chiavi private con almeno 2048 bit RSA o 256 bit ECDSA per una forte sicurezza
- Usa una passphrase per crittografare il file della chiave privata per un ulteriore livello di protezione
- Conserva le chiavi private in un luogo sicuro con controlli di accesso rigorosi, come una cassaforte chiusa o un modulo di sicurezza hardware (HSM) crittografato
- Limita l'accesso alle chiavi private solo agli amministratori che ne hanno assolutamente bisogno
- Non condividere mai le chiavi private su canali non sicuri come email o messaggistica
- Ruota e aggiorna regolarmente le chiavi private, soprattutto se c'è qualche possibilità di compromissione
Anche i certificati SSL/TLS devono essere gestiti e distribuiti con attenzione. Alcune linee guida includono:
- Usa un'autorità di certificazione (CA) affidabile e attendibile per emettere i tuoi certificati
- Scegli il tipo di certificato giusto per le tue esigenze, come singolo dominio, multi-dominio o wildcard
- Consegna in modo sicuro la richiesta di firma del certificato (CSR) alla CA, ad esempio attraverso un modulo web crittografato o un'email
- Conserva i certificati in una posizione protetta, con accesso limitato per gli amministratori
- Installa e configura correttamente i certificati sui tuoi server web, bilanciatori di carico e altri endpoint SSL/TLS
- Tieni traccia delle date di scadenza dei certificati e rinnovali prima che scadano per evitare tempi di inattività
- Sostituisci i certificati se la chiave privata è compromessa o se il certificato deve essere revocato per qualsiasi motivo
Mantenere OpenSSL Aggiornato
Utilizzare l'ultima versione di OpenSSL è importante per ottenere le più recenti correzioni di sicurezza, supporto di protocolli e algoritmi e funzionalità. Le versioni più vecchie possono avere vulnerabilità note che gli attaccanti possono sfruttare.
Controlla la tua versione di OpenSSL con openssl version e confrontala con le ultime versioni sul sito web di OpenSSL. Se non sei sulla versione più recente, aggiorna il prima possibile.
Il processo di aggiornamento dipende dal tuo sistema operativo e ambiente:
- Su Linux, usa il tuo gestore di pacchetti per installare l'ultima versione di OpenSSL. Ad esempio, su Ubuntu o Debian:
sudo apt update sudo apt install openssl - Su Windows, scarica l'ultimo installer o i binari di OpenSSL dal sito ufficiale o da un fornitore terzo affidabile. Sostituisci la tua vecchia directory OpenSSL con la nuova versione.
- Per linguaggi di programmazione e framework come Python, Ruby o Node.js, aggiorna la libreria OpenSSL che utilizzano. Questo potrebbe significare aggiornare il linguaggio/framework stesso o eventuali librerie wrapper SSL/TLS.
- Su server web come Apache o Nginx, aggiorna la versione del server o i moduli OpenSSL per ottenere l'ultima versione. Controlla la documentazione del server per istruzioni specifiche sull'aggiornamento.
Dopo aver aggiornato OpenSSL, assicurati di testare la tua configurazione SSL/TLS e i certificati per assicurarti che tutto funzioni ancora correttamente. Strumenti come SSL Labs possono aiutare a trovare eventuali problemi.
Seguendo queste migliori pratiche per gestire in modo sicuro le chiavi e i certificati e mantenendo OpenSSL aggiornato, puoi proteggere meglio la tua configurazione SSL/TLS e i dati dei tuoi utenti.
Monitoraggio dei Certificati SSL
Il monitoraggio dei certificati SSL è una parte cruciale del mantenimento di un sito web sicuro e affidabile. Certificati SSL scaduti o configurati in modo errato possono portare a vulnerabilità di sicurezza e a una cattiva esperienza utente. Uptimia offre un servizio di Monitoraggio dei Certificati SSL che ti aiuta a tenere traccia della salute e della validità dei tuoi certificati. Con Uptimia, puoi ricevere avvisi quando un certificato sta per scadere o ha problemi tecnici, come nomi di dominio non corrispondenti, algoritmi di crittografia deboli o catene di certificati non valide. Monitorando proattivamente i tuoi certificati SSL con Uptimia, puoi stare tranquillo che il tuo sito web rimane sicuro e accessibile ai tuoi utenti.
Punti Chiave
- Usa il comando
openssl version -aper identificare la tua versione di OpenSSL, le opzioni di compilazione e la directory predefinita di archiviazione dei certificati e delle chiavi - I comandi OpenSSL comuni includono
genrsaper generare chiavi private,reqper creare CSR,x509per visualizzare e convertire certificati,pkcs12per convertire formati es_clientper testare connessioni sicure - Quando generi chiavi private, scegli tra gli algoritmi RSA (consigliato) ed ECDSA, usa una dimensione della chiave di almeno 2048 bit per RSA o 256 bit per ECDSA, e considera l'uso di unapassphrase per una maggiore sicurezza
- Usa i comandi OpenSSL per visualizzare le informazioni dei certificati, verificare la corrispondenza delle chiavi, convertire tra i formati PEM, PKCS#12 e DER, elencare le suite di cifratura supportate e creare hash dei file
- Segui le migliori pratiche come generare chiavi private forti, utilizzare una CA affidabile, conservare e gestire in modo sicuro le chiavi e i certificati, e mantenere OpenSSL aggiornato per proteggere la tua configurazione SSL/TLS





