Progetto

Generale

Profilo

OpenSslPKCS12 » Cronologia » Versione 9

Versione 8 (Simone Piccardi, 17-04-2023 12:33) → Versione 9/11 (Simone Piccardi, 17-04-2023 12:39)

h1. Come estrarre CA, Certificati e chiavi da un file PKCS12 o PFX 

 È necessario avere installato OpenSSL nel proprio sistema, questo si può fare con: 

 <pre> 
 apt-get install openssl 
 </pre> 

 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). 

 h2. Estrazione da un file .p12 (PKCS12) 

 Quando si vogliono utilizzare i dati di un certificato PKCS12 con di 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.  

 h3. Estrazione del certificato: 

 <pre> 
 openssl pkcs12 -clcerts -nokeys -in mycert.p12 -out usercert.pem 
 </pre> 

 h3. Estrazione della chiave: 

 <pre> 
 openssl pkcs12 -nocerts -in mycert.p12 -out userkey.pem 
 </pre> 

 h3. Estrazione del certificato della CA: 

 <pre> 
 openssl pkcs12 -nokeys -nodes -cacerts -in mycert.p12 -out cacert.pem 
 </pre> 


 

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

 <pre> 
 openssl pkcs12 -in originale.p12 -out temp.pem -nodes 
 </pre> 

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

 <pre> 
 openssl pkcs12 -export -in temp.pem -out nuovo.p12 
 </pre> 

 si dovrà immettere la nuova password due volte (la seconda (per conferma); 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). 

 h3. Ricodifica di un certificato PKCS12 con codifica obsoleta 

 Può capitare con dei certificati PKCS12 di OpenVPN generati prima del passaggio a OpenSSL 3, che depreca una serie di codifiche interne degli stessi, cosa che rende legge illeggibili detti certificati sulle macchine che hanno questa nuova versione, l'errore si verifica provando ad esportare il certificato come nel caso precedente, in cui si ottiene; 

 <pre> 
 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 () 
 </pre> 

 per poter eseguire l'esportazione e poi ricodificare il certificato con un algoritmo supportato si deve eseguire l'esportazione con l'opzione aggiuntiva @--legacy@: con: 

 <pre> 
 openssl pkcs12 -in cert.p12 -out temp.pem --nodes --legacy 
 </pre> 

 e poi si potrà passare a ricreare un PKCS12 ricreario ex-novo con: 

 <pre> 
 openssl pkcs12 -export -in temp.pem -out nuovo.p12 
 </pre> 

 che richiede due volta una passphrase e salva crea il nuovo certificato in @nuovo.p12@ 

 h2. Estrazione da un file .pfx 

 h3. Estrazione del certificato: 

 <pre> 
 openssl pkcs12 -in certificate.pfx -nokeys -out cert.pem 
 </pre> 

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

 h3. Estrazione della chiave: 

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

 <pre> 
 openssl pkcs12 -in certificate.pfx -nocerts -out key.pem -nodes 
 </pre> 

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

 <pre> 
 openssl rsa -in key.pem -out server.key 
 </pre>