57
contributi
Riga 1: | Riga 1: | ||
[[ | ===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: | |||
<pre>apt-get install openssl</pre> | |||
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: | |||
<pre> | |||
[ 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 | |||
... | |||
</pre> | |||
===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'': | |||
<pre># openssl genrsa -des3 -out private/ca.key 1024 | |||
Enter pass phrase for private/ca.key: | |||
Verifying - Enter pass phrase for private/ca.key: | |||
</pre> | |||
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|Creazione della chiave]], per generare un certificato root CA '''ca.crt''' con validit� di 1 anno: | |||
<pre># 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:</pre> | |||
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|Creazione della chiave]]: | |||
<pre># openssl genrsa -des3 -out private/server.key 1024 | |||
Enter pass phrase for private/server.key: | |||
Verifying - Enter pass phrase for private/server.key:</pre> | |||
È 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: | |||
<pre># openssl rsa -in private/server.key -out private/server.key.unsecure | |||
Enter pass phrase for private/server.key: | |||
writing RSA key</pre> | |||
'''Importante''': la chiave priva di ''pass phrase'' non è più protetta, quindi assicurarsi almeno che abbia i permessi opportuni. |
contributi