Autorità di certificazione locale
Introduzione
L'utilizzazione di una autorità di certificazione locale (self signed CA) trova applicazione in tutti quei casi in cui non sia necessario che una root CA esterna firmi i nostri certificati.
Uno scenario tipico è quello di una LAN con server https: l'utilizzo di una CA locale evita tutti quei noiosi avvisi da parte dei client che lamentano l'incertezza dell'origine del certificato del server https. Un altro scenario è quello in cui sia necessario un sistema di autenticazione web basato su certificati: affinché ogni client possa autenticarsi è necessario che esso presenti il certificato richiesto.
Installazione e Configurazione di Openssl
Per installare la libreria SSL e gli applicativi necessari alla creazione di chiavi e certificati dare il comando:
apt-get install openssl
Per minimizzare la quantità di informazioni richieste durante la creazione di chiavi e certificati, può essere utile modificare il file /etc/sslopenssl.cnf per esempio alla seguente sezione:
[ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = IT ... stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Italy ... 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Azienda SpA ...
Creazione della chiave
Prima del certificato è necessario creare una chiave. Il seguente comando genera nella directory /etc/openssl/private la chiave privata ca.key di 1024 bit criptata con algoritmo triple DES:
# openssl genrsa -des3 -out private/ca.key 1024 Enter pass phrase for private/ca.key: Verifying - Enter pass phrase for private/ca.key:
La chiave sarà generata dopo aver immesso la pass phrase.
Nota: vista l'importanza della chiave privata a livello sicurezza, dare gli opportuni permessi alla directory /etc/openssl/private e a ca.key.
Creazione del certificato (root CA)
Prima di procedere assicurarsi che /etc/ssl/index.txt sia vuoto e che /etc/ssl/serial contenga il valore 01.
Utilizziamo la chiave creata nella sezione Creazione della chiave, per generare un certificato root CA ca.crt con validità di 1 anno:
# openssl req -config /etc/ssl/openssl.cnf -new -x509 -key private/ca.key -out ca.crt -days 365 Enter pass phrase for private/ca.key:
Il certificato appena creato sarà utilizzato esclusivamente per firmare tutti gli altri certificati generati in seguito.
Affinché i browser possano riconoscere come valida la root CA appena creata, gli utenti finali dovranno installare il certificato ca.crt nei loro browser. Riferirsi alla sezione XXX per maggiorni informazioni.
Aggiungendo l'opzione -batch al precedente comando potremmo automatizzare l'operazione utilizzando i valori predefiniti impostati nel file /etc/ssl/openssl.cnf. Utile quando utilizzata da script.
Certificato lato server
Questo è il certificato che il server utilizza per cifrare i dati scambiati con i vari client. Un tipico esempio è un server https.
Creazione della chiave
Il modo in cui creare la chiave e le osservazioni sono le stesse viste nella sezione Creazione della chiave:
# openssl genrsa -des3 -out private/server.key 1024 Enter pass phrase for private/server.key: Verifying - Enter pass phrase for private/server.key:
È probabile che la chiave generata sia poi utilizzata insieme al relativo certificato nella configurazione di apache; in tal caso apache attenderà ad ogni avvio che venga inserita la pass phrase relativa alla chiave utilizzata. Vista la scomodità di tale soluzione, si può togliere la pass phrase dalla chiave:
# openssl rsa -in private/server.key -out private/server.key.unsecure Enter pass phrase for private/server.key: writing RSA key
Importante: la chiave priva di pass phrase non è più protetta, quindi assicurarsi almeno che abbia i permessi opportuni.