Autorità di certificazione locale: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
(Tolto dalla Categoria Stub)
Riga 1: Riga 1:
{{stub}}
==Introduzione==
==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.
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.
Riga 6: Riga 5:


Illustrerò come generare una CA locale, come usarla per creare certificati
Illustrerò come generare una CA locale, come usarla per creare certificati
lato server e lato client, infine mostrer� come revocare un certificato.
lato server e lato client, infine mostrerò come revocare un certificato.


==Installazione e Configurazione di Openssl==
==Installazione e Configurazione di Openssl==
Per installare la libreria SSL e gli applicativi necessari alla creazione di chiavi e certificati dare il comando:
Per installare la libreria [http://it.wikipedia.org/wiki/Secure_Sockets_Layer:Link SSL] e gli applicativi necessari alla creazione di chiavi e certificati dare il comando:
<pre>apt-get install openssl</pre>
<pre>apt-get install openssl</pre>


Per minimizzare la quantit� di informazioni richieste durante la creazione di chiavi e certificati, pu&ograve;
Per minimizzare la quantità di informazioni richieste durante la creazione di chiavi e certificati, pu&ograve;
essere utile modificare il file '''/etc/ssl/openssl.cnf''' per esempio alla seguente sezione:
essere utile modificare il file '''/etc/ssl/openssl.cnf''' per esempio alla seguente sezione:
<pre>
<pre>
Riga 52: Riga 51:
Il certificato appena creato sar&agrave; utilizzato esclusivamente per firmare tutti gli altri certificati generati in seguito.
Il certificato appena creato sar&agrave; utilizzato esclusivamente per firmare tutti gli altri certificati generati in seguito.


Affinch&eacute; 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 [[#Configurazione Client Browser | Configurazione Client Browser]] per ottenere maggiorni informazioni.
Affinch&eacute; 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 [[#Certificato lato client | Certificazione lato client]] per ottenere 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 il comando &egrave; utilizzato in uno script.
Aggiungendo l'opzione '''-batch''' al precedente comando potremmo automatizzare l'operazione utilizzando i valori predefiniti impostati nel file '''/etc/ssl/openssl.cnf'''. Utile quando il comando &egrave; utilizzato in uno script.


==Certificato lato server==
==Certificato lato server==
Questo &egrave; il certificato che il server utilizza per cifrare i dati scambiati con i vari client. Un tipico esempio un server ''https''.
Questo &egrave; il certificato che il server utilizza per cifrare i dati scambiati con i vari client. Un tipico esempio è un server ''https''.


====Creazione della chiave (server)====
====Creazione della chiave (server)====
Riga 94: Riga 93:
===Direttive apache-ssl===
===Direttive apache-ssl===
Importanti sono le seguenti direttive:
Importanti sono le seguenti direttive:
; SSLCACertificatePath: indica la directory dove sono contenuti certificati e CRL.
; SSLCACertificatePath: indica la directory dove sono contenuti certificati e ''CRL'' (''Certificate Revocation List'')
Esempio: <tt>SSLCACertificatePath /etc/ssl</tt>
Esempio: <tt>SSLCACertificatePath /etc/ssl</tt>
; SSLCertificateFile: indica il certificato lato server per mezzo del quale i dati vengono cifrati. Secondo quanto riportato in questa guida esso corrisponde al file /etc/ssl/certs/server.crt.
; SSLCertificateFile: indica il certificato lato server per mezzo del quale i dati vengono cifrati. Secondo quanto riportato in questa guida esso corrisponde al file /etc/ssl/certs/server.crt.
Riga 142: Riga 141:
</VirtualHost>
</VirtualHost>
</pre>
</pre>
Quando revocato un certificato client relativo al virtual host <tt>x.y.z.w</tt>, il risultato potrebbe non corrispondere a quanto voluto. Se si visitasse l'URL <tt>https://x.y.z.w</tt> con il browser in cui installato il certificato revocato , si noterebbe che l'accesso non verrebbe impedito. Questo accade perch&eacute; '''SSLOnRevocationSetEnv SSL_REVOKED''' non nega l'accesso ai certificati revocati, ma imposta la variabile '''SSL_REVOKED''' a "YES" e la direttiva posta nel contesto ''server config'' ha valore anche per gli host virtuali.
Quando è revocato un certificato client relativo al virtual host <tt>x.y.z.w</tt>, il risultato potrebbe non corrispondere a quanto voluto. Se si visitasse l'URL <tt>https://x.y.z.w</tt> con il browser in cui è installato il certificato revocato , si noterebbe che l'accesso non verrebbe impedito. Questo accade perch&eacute; '''SSLOnRevocationSetEnv SSL_REVOKED''' non nega l'accesso ai certificati revocati, ma imposta la variabile '''SSL_REVOKED''' a "YES" e la direttiva posta nel contesto ''server config'' ha valore anche per gli host virtuali.
La soluzione quella di commentare la direttiva nel contesto ''server config'' e attivarla, se serve, per ogni singolo host virtuale.
La soluzione è quella di commentare la direttiva nel contesto ''server config'' e attivarla, se serve, per ogni singolo host virtuale.


==Configurazione Client Browser==
==Certificato lato client==
I passi da seguire per la creazione dei certificati lato client sono essenzialmente analoghi a quelli illustrati nella sezione [[#Certificato lato server | Certificato lato server]].
I passi da seguire per la creazione dei certificati lato client sono essenzialmente analoghi a quelli illustrati nella sezione [[#Certificato lato server | Certificato lato server]].


Riga 169: Riga 168:
</pre>
</pre>


a questo punto il file '''client1.csr''' non e' pi� necessario. Infine '''client1.crt''' e '''client1.key''' vanno messi in un unico file:
a questo punto il file '''client1.csr''' non e' più necessario. Infine '''client1.crt''' e '''client1.key''' vanno messi in un unico file:
<pre>
<pre>
# cat private/client1.key > private/client1.pem
# cat private/client1.key > private/client1.pem
Riga 191: Riga 190:


==Revoca di un certificato==
==Revoca di un certificato==
Un certificato pu� essere revocato per vari motivi, tra cui i seguenti:
Un certificato può essere revocato per vari motivi, tra cui i seguenti:
* '''unspecified''' motivazione non specificata.
* '''unspecified''' motivazione non specificata.
* '''keyCompromise''' la chiave relativa al certificato stata compromessa (p.e. giunta nelle mani sbagliate).
* '''keyCompromise''' la chiave relativa al certificato è stata compromessa (p.e. è giunta nelle mani sbagliate).
* '''superseded''' il certificato stato rimpiazzato.
* '''superseded''' il certificato è stato rimpiazzato.


Per un elenco esaustivo consultare la pagina del manuale ''openssl CA(1)''.
Per un elenco esaustivo consultare la pagina del manuale ''openssl CA(1)''.
Riga 203: Riga 202:
Enter pass phrase for private/ca.key:
Enter pass phrase for private/ca.key:
</pre>
</pre>
Il rudimentale database '''/etc/ssl/index.txt''' aggiornato marcando il certificato come revocato. Risultano revocati tutti quei certificati che in '''/etc/ssl/index.txt''' presentano una lettera '''R''' come primo campo.
Il rudimentale database '''/etc/ssl/index.txt''' è aggiornato marcando il certificato come revocato. Risultano revocati tutti quei certificati che in '''/etc/ssl/index.txt''' presentano una lettera '''R''' come primo campo.


===Creazione e aggiornamento di una CRL===
===Creazione e aggiornamento di una CRL===
Per conoscere quali certificati sono stati revocati, &egrave; necessario generare una ''CRL'' (''Certificate Revocation List''):
Per conoscere quali certificati sono stati revocati, &egrave; necessario generare una ''CRL'' (''Certificate Revocation List''). Una ''CRL'' &egrave; una lista che dichiara quali certificati sono stati revocati e la motivazione della revoca.
<pre># openssl ca -config openssl.cnf -gencrl -out crl/crl.pem</pre>
<pre># openssl ca -config openssl.cnf -gencrl -out crl/crl.pem</pre>
Il comando precedente crea una ''CRL'' in base alle informazioni contenute in '''/etc/ssl/index.txt''' e deve essere impartito ogni volta che uno o pi&ugrave; certificati sono revocati.
Il comando precedente crea una ''CRL'' in base alle informazioni contenute in '''/etc/ssl/index.txt''' e deve essere impartito ogni volta che uno o pi&ugrave; certificati sono revocati.
Riga 215: Riga 214:


----
----
: [[Utente:Nicsar|Nicsar]]
: [[Utente:Nicsar|Nicsar]] 05:00, 1 Nov 2006 (CST)
 
[[Categoria:Sicurezza]]