seozie-img

Proseguiamo con un altro articolo della serie dedicata ai programmi di ausilio alla gestione della suite di protocolli TLS/SSL (Transport Layer Security/Secure Socket Layer), fondamentali per la sicurezza dei servizi di rete per la capacità di fornire connessioni protette sia in termini di verifica del corretto corrispondente, che di riservatatezza dei dati inviati.

I certificati SSL/TLS possono avere diversi formati ed estensioni, ma ad oggi i più comuni sono il PEM, usato dalla gran parte dei server che forniscono i servizi di rete, che consente di usare file separati per chiavi e cerfificati, ed il PKCS#12 (talvolta chiamato PFX) usati prevalentemente nel mondo Windows.

Questi ultimi sono in un formato binario, e prevedono l’utilizzo di un singolo file in cui sono contenuti il certificato finale, eventuali certificati intermedi e la chiave.

Estrazione dei dati da un file .p12 (PKCS12)

Quando si vogliono utilizzare i dati di un certificato PKCS12 con dei programmi che utilizzano il formato PEM per chiavi e certificati SSL (come usuale per demoni di sistema come Apache, Postfix, Nginx, ecc.) occorre estrarli esplicitamente.

Estrazione del certificato:

openssl pkcs12 -clcerts -nokeys -in mycert.p12 -out usercert.pem

Estrazione della chiave:

openssl pkcs12 -nocerts -in mycert.p12 -out userkey.pem 

si ricordi che l’estrazione della chiave su un file ne rimuove la password, si abbia cura di farla in una directory non leggibile da terzi o di predisporre una opportuna umask. Si aggiustino poi i permessi dei file se li si devono spostare (600/640 per la chiave, 644 per i certificati).

Estrazione del certificato della CA:

openssl pkcs12 -nokeys -nodes -cacerts -in mycert.p12 -out cacert.pem

Cambiamento della password su un certificato PKCS12

Deve essere fatto in due passi, prima deve essere estratto il contenuto del certificato PKCS12 su un file .pem con:

openssl pkcs12 -in originale.p12 -out temp.pem -nodes

verrà chiesta la password originale, data la quale tutti i dati verranno salvati senza password su temp.pem, a questo punto lo si potrà rigenerare con una password diversa con:

openssl pkcs12 -export -in temp.pem -out nuovo.p12

si dovrà immettere la nuova password due volte (la seconda per conferma).

Per avere un certificato senza password si prema due volte invio. Completato il cambiamento si cancellino i file che non servono più (compreso il temporaneo).

Ricodificare un certificato PKCS12

Può capitare che con dei certificati PKCS12 generati prima del passaggio a OpenSSL 3.0, che depreca una serie di codifiche interne degli stessi, diventino illeggibili sulle macchine che hanno questa nuova versione, rendendo impossibile lanciare i servizi che li usano (accade ad esempio con OpenVPN).

Per verificare che si tratti di questo caso si può provare ad esportare i dati del certificato in formato PEM, e si otterrà:

root@bookworm:~# openssl pkcs12 -in cert.p12 -out temp.pem --nodes
Enter Import Password:
Error outputting keys and certificates
4067C4EF727F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:373:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()

che ci dice che si è usato un algoritmo di codifica non più supportato.

Dato che il problema è nella codifica del .p12 e non nel contenuto dei certificati, per poterli utilizzare con OpenSSL 3.0 occorre eseguire l’esportazione degli stessi e poi ricodificare un certificato .p12 usando un algoritmo supportato. Per questo si deve eseguire l’esportazione con l’opzione aggiuntiva --legacy che consente di leggere i dati anche con le codifiche non più supportate, eseguendo:

openssl pkcs12 -in cert.p12 -out temp.pem --nodes --legacy

che genera un .pem con tutte le informazioni contenute nel .p12 da cui poi si potrà passare a ricreare un PKCS12 ex-novo con codifica corretta con:

openssl pkcs12 -export -in temp.pem -out nuovo.p12

che richiede due volte una passphrase e salva il nuovo certificato in nuovo.p12.

Estrazione da un file .pfx

 

Estrazione del certificato:

openssl pkcs12 -in certificate.pfx -nokeys -out cert.pem

chiederà la passphrase del certificato e creerà il file cert.pem col certificato.

Estrazione della chiave:

Quando si deve estrarre la chiave (privata) da un file .pfx occorrerà passare dall’esportazione dei dati:

openssl pkcs12 -in certificate.pfx -nocerts -out key.pem -nodes

chiederà la passphrase del certificato e creerà il file key.pem con dentro chiave e certificato, poi per ottenere la sola chiave occorrerà:

openssl rsa -in key.pem -out server.key

A questo punto dovreste essere in grado di procedere all’operazione senza troppo difficoltà, ma se avete bisogno di ulteriori consigli o supporto, non esitate a contattarci compilando il form nella sezione contatti del nostro sito web.

                                                                                                           La redazione

Share
0
    0
    Il tuo Carrello
    Il tuo Carrello è vuotoReturn to Shop