seozie-img

Continuando la serie di tutorial, in questo articolo andremo a trattare, quali programmi possano essere d’aiuto alla gestione della suite di protocolli TLS/SSL (Transport Layer Security/Secure Socket Layer), determinanti per la sicurezza dei servizi di rete per quanto riguarda la capacità di fornire connessioni protette sia in termini di verifica del corretto corrispondente, che di riservatatezza dei dati inviati.

Esistono diversi formati ed estensioni, per quanto riguarda i certificati SSL/TLS,  ma ad oggi i più comuni sono il PEM, utilizzati dalla gran parte dei server che forniscono i servizi di rete, che permettono di usare file separati per chiavi e cerfificati, ed il PKCS#12 (talvolta chiamato PFX) utilizzato 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.

Come estrarre i dati da un file .p12 (PKCS12)

Se si ha la necessità di utilizzare i dati di un certificato PKCS12 attraverso programmi che utilizzano il formato PEM per chiavi e certificati SSL (come usuale per demoni di sistema come Apache, Postfix, Nginx, ecc.) occorre estrarli in maniera esplicita.

Come ottenere l’estrazione del certificato:

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

Come ottenere l’estrazione della chiave:

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

badate bene che l’estrazione della chiave su un file ne rimuove la password, dunque è importante avere cura di eseguirla in una directory non leggibile da terzi o di predisporre una opportuna umask. Si correggano poi i permessi dei file se li si devono spostare (600/640 per la chiave, 644 per i certificati).

Come ottenere l’estrazione del certificato della CA:

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

Come ottenere il cambiamento della password su un certificato PKCS12

Questa operazione deve essere eseguita 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

a questo punto verrà chiesta la password originale, dopodicchè 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

la nuova password dovrà essere inserita due volte (la seconda per conferma).

Se invece si volesse ottenere un certificato senza password, allora si dovrà premere due volte il tasto invio. Completato il cambiamento si cancellino i file che non servono più (compreso il temporaneo).

Come ricodificare un certificato PKCS12

Potrebbe 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 assicurarsi che si tratti di questo caso specifico, 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 ()

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

Visto che il problema risiede nella codifica del .p12 e non nel contenuto dei certificati, per poterli utilizzare con OpenSSL 3.0 bisogna eseguire l’esportazione degli stessi e poi ricodificare un certificato .p12 utilizzando un algoritmo supportato. Ecco perchè bisogna eseguire l’esportazione con l’opzione aggiuntiva --legacy che permette 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.

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

Nel momento in cui si deve estrarre la chiave (privata) da un file .pfx sarà necessario 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

Giunti fin qui, dovreste essere in grado di procedere all’operazione senza troppe 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 redazioneContinuando la serie di tutorial

Share

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