57
contributi
(Tolto dalla Categoria Stub) |
|||
Riga 1: | Riga 1: | ||
==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 | 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 | Per minimizzare la quantità di informazioni richieste durante la creazione di chiavi e certificati, può | ||
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à utilizzato esclusivamente per firmare tutti gli altri certificati generati in seguito. | 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 [[# | 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 [[#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 è 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 è utilizzato in uno script. | ||
==Certificato lato server== | ==Certificato lato server== | ||
Questo è il certificato che il server utilizza per cifrare i dati scambiati con i vari client. Un tipico esempio | 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 (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 | 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é '''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 | La soluzione è quella di commentare la direttiva nel contesto ''server config'' e attivarla, se serve, per ogni singolo host virtuale. | ||
== | ==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' | 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 | 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 | * '''keyCompromise''' la chiave relativa al certificato è stata compromessa (p.e. è giunta nelle mani sbagliate). | ||
* '''superseded''' il certificato | * '''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''' | 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, è necessario generare una ''CRL'' (''Certificate Revocation List'') | Per conoscere quali certificati sono stati revocati, è necessario generare una ''CRL'' (''Certificate Revocation List''). Una ''CRL'' è 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ù 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ù certificati sono revocati. | ||
Riga 215: | Riga 214: | ||
---- | ---- | ||
: [[Utente:Nicsar|Nicsar]] | : [[Utente:Nicsar|Nicsar]] 05:00, 1 Nov 2006 (CST) | ||
[[Categoria:Sicurezza]] |
contributi