Apache, SSL e CaCert.Org: differenze tra le versioni
S3v (discussione | contributi) mNessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
=Introduzione= | =Introduzione= | ||
Chi avrà provato ad installare | Chi avrà provato ad installare Apache (o Apache2) con supporto ssl si sarà trovato davanti al problema del certificato: come generarlo? che valore ha? dove posso ottenere un certificato valido? esistono soluzioni gratuite? | ||
Queste sono le domande normali che si pone un utente, soprattutto guardando i prezzi esorbitanti proposti per l'acquisto di certificati [http://it.wikipedia.org/wiki/SSL SSL]. | Queste sono le domande normali che si pone un utente, soprattutto guardando i prezzi esorbitanti proposti per l'acquisto di certificati [http://it.wikipedia.org/wiki/SSL SSL]. | ||
Riga 54: | Riga 54: | ||
{{Box|Nota:|i dati inseriti sono fittizi, è d'obbligo sostituirli con quelli reali}} | {{Box|Nota:|i dati inseriti sono fittizi, è d'obbligo sostituirli con quelli reali}} | ||
Per dare una durata di tempo al certificato aggiungere al comando openssl , -days xxx | Per dare una durata di tempo al certificato aggiungere al comando openssl, <code> -days xxx </code> | ||
dove xxx | dove xxx è il numero di giorni di validità dello stesso. | ||
Ricordate però che il certificato durerà solo 6 mesi , qualsiasi numero venga immesso nel campo | Ricordate però che il certificato durerà solo 6 mesi, qualsiasi numero venga immesso nel campo <code>-days xxx</code>, al termine della scadenza occorrerà rinnovare il certificato che sarà nuovamente valido per altri 6 mesi. | ||
Se questa procedura non vi piace , potete farvi certificare da un Accertatore ( trovate la lista nel sito cacert dopo esservi loggati ) | Se questa procedura non vi piace, potete farvi certificare da un Accertatore (trovate la lista nel sito cacert dopo esservi loggati): ciò vi permetterà di vedere riconosciuta la vostra identità e ottenere ulteriori benefici, compresa una maggiore durata dei certificati e la possibilità di inserire il vostro nome nei certificati per la posta elettronica. | ||
Verranno generati due file: | Verranno generati due file: <code>dominio.it.key</code>, che rappresenta la chiave privata; <code>dominio.it.csr</code> che rappresenta la Richiesta di Sottoscrizione del Certificato. | ||
==Richiesta del Certificato== | ==Richiesta del Certificato== | ||
Visualizziamo il contenuto del file | Visualizziamo il contenuto del file <code>dominio.it.csr</code> e copiamolo nel form contenuto in ''Certificati per i Server (Server Certificates)'', ''Nuovo''. | ||
Inviamo il contenuto del form e confermiamo. Al termine dell'elaborazione verrà mostrato il codice del certificato (una copia ci verrà inviata anche via email), salviamolo nel file | Inviamo il contenuto del form e confermiamo. Al termine dell'elaborazione verrà mostrato il codice del certificato (una copia ci verrà inviata anche via email), salviamolo nel file <code>dominio.it.crt</code>. | ||
==Spostiamo i file sul server== | ==Spostiamo i file sul server== | ||
Spostiamo i tre file sul server, nella directory | Spostiamo i tre file sul server, nella directory <code>/etc/apache/ssl/</code> nel caso di Apache, <code>/etc/apache2/ssl</code> nel caso di Apache2. | ||
==Verifica del Certificato== | ==Verifica del Certificato== | ||
Prima di configurare il server è d'obbligo un controllo sulla correttezza del certificato. Per fare questo dobbiamo: | Prima di configurare il server è d'obbligo un controllo sulla correttezza del certificato. Per fare questo dobbiamo: | ||
* Scaricare il ''root certificate'' | * Scaricare il ''root certificate'' da[http://www.cacert.org/certs/root.crt questo] indirizzo | ||
* Copiarlo nella directory | * Copiarlo nella directory <code>/etc/apache/ssl/</code> (o <code>/etc/apache2/ssl</code> nel caso di Apache2) | ||
* Eseguire il comando: <pre>openssl verify -CAfile root.crt -purpose sslserver dominio.it.crt</pre> | * Eseguire il comando: <pre>openssl verify -CAfile root.crt -purpose sslserver dominio.it.crt</pre> | ||
Riga 80: | Riga 80: | ||
==Rinnovo del certificato== | ==Rinnovo del certificato== | ||
Poco prima della scadenza del certificato (di solito 14 giorni ), riceverete una mail che vi comunicherà il termine del certificato , successivamente se non rinnovate il certificato , riceverete un'altra mail alcuni giorni prima della scadenza. | Poco prima della scadenza del certificato (di solito 14 giorni ), riceverete una mail che vi comunicherà il termine del certificato, successivamente se non rinnovate il certificato, riceverete un'altra mail alcuni giorni prima della scadenza. | ||
Nella mail potete trovare il link a cacert | Nella mail potete trovare il link a cacert: accedete al sito e loggatevi con le vostre credenziali. | ||
Nella finestra ''Certificati server/visualizza'' potete vedere i certificati da voi creati , ( qui potete anche eliminare vari certificati creati per errore ) , individuate il certificato da aggiornare , come aiuto se ne avete più di uno potete controllare con la data di scadenza che compare a destra. | Nella finestra ''Certificati server/visualizza'' potete vedere i certificati da voi creati, (qui potete anche eliminare vari certificati creati per errore), individuate il certificato da aggiornare, come aiuto se ne avete più di uno potete controllare con la data di scadenza che compare a destra. | ||
Spuntate il certificato da rinnovare e | Spuntate il certificato da rinnovare e fate click sul pulsante ''Rinnova''. | ||
In pochi secondi il certificato verrà rinnovato e vi comparirà una nuova pagina contenente il nuovo certificato . | In pochi secondi il certificato verrà rinnovato e vi comparirà una nuova pagina contenente il nuovo certificato. | ||
Copiate il testo da BEGIN CERTIFICATE a END CERTIFICATE e andate a sostituirlo nel file apache2/ssl/vostro-certificato.crt e riavviate | Copiate il testo da BEGIN CERTIFICATE a END CERTIFICATE e andate a sostituirlo nel file <code>apache2/ssl/vostro-certificato.crt</code> e riavviate Apache2 | ||
<pre> | |||
# /etc/init.d/apache2 restart | # /etc/init.d/apache2 restart </pre> | ||
Ora tornate alla finestra ''certificati server /visualizza'' , e verificate che la data del certificato da voi rinnovato sia cambiata . | Ora tornate alla finestra ''certificati server/visualizza'', e verificate che la data del certificato da voi rinnovato sia cambiata. | ||
Se tutto è andato bene avrete altri 6 mesi dalla data di rinnovo. | Se tutto è andato bene avrete altri 6 mesi dalla data di rinnovo. | ||
Riga 109: | Riga 109: | ||
===Modifica impostazioni base=== | ===Modifica impostazioni base=== | ||
Il file in questione è | Il file in questione è <code>/etc/apache-ssl/httpd.conf</code>. Le voci da adattare alla propria configurazione sono le seguenti: | ||
; ServerName : indica il dominio al quale dovrà rispondere il server. Nel nostro caso sarà ''esempio.it''. | ; ServerName : indica il dominio al quale dovrà rispondere il server. Nel nostro caso sarà ''esempio.it''. | ||
; ServerAdmin : l'email dell'amministratore del server. Nel nostro caso ''sysadmin@esempio.it''. | ; ServerAdmin : l'email dell'amministratore del server. Nel nostro caso ''sysadmin@esempio.it''. | ||
Riga 115: | Riga 115: | ||
===Aggiunta del Certificato=== | ===Aggiunta del Certificato=== | ||
Il file da modificare è, anche in questo caso, quello principale: | Il file da modificare è, anche in questo caso, quello principale: <code>/etc/apache-ssl/httpd.conf</code>. All'interno di questo è presente una sottosezione, preceduta dalla riga | ||
<pre> | <pre> | ||
# ----------------------------SSL---------------------------------- | # ----------------------------SSL---------------------------------- | ||
Riga 134: | Riga 134: | ||
=Apache2= | =Apache2= | ||
==Installazione== | ==Installazione== | ||
L'installazione di | L'installazione di Apache2 è semplicissima: | ||
<pre> | <pre> | ||
# apt-get install apache2 | # apt-get install apache2 | ||
Riga 140: | Riga 140: | ||
==Attivazione del supporto SSL== | ==Attivazione del supporto SSL== | ||
Per poter usare SSL in | Per poter usare SSL in Apache2 è necessario attivarlo (visto che non è presente un pacchetto apposito come ''apache-ssl''): | ||
<pre> | <pre> | ||
# a2enmod ssl | # a2enmod ssl | ||
Riga 151: | Riga 151: | ||
Prima di procedere, però, dobbiamo modificare il comportamento di Apache relativamente ai ''NameVirtualHost''. | Prima di procedere, però, dobbiamo modificare il comportamento di Apache relativamente ai ''NameVirtualHost''. | ||
Modifichiamo il file | Modifichiamo il file <code>/etc/apache2/apache.conf</code> e aggiungiamo, prima di | ||
<pre> | <pre> | ||
Include /etc/apache2/sites-enabled/[^.#]* | Include /etc/apache2/sites-enabled/[^.#]* | ||
Riga 160: | Riga 160: | ||
NameVirtualHost *:443 | NameVirtualHost *:443 | ||
</pre> | </pre> | ||
e assicuriamoci che l'opzione ''NameVirtualHost *'' sia commentata o rimossa dal file | e assicuriamoci che l'opzione ''NameVirtualHost *'' sia commentata o rimossa dal file <code>/etc/apache2/sites-available/default</code>. | ||
Modifichiamo tutti i VirtualHost aggiungendo l'indicazione delle porte (ad esempio: ''<VirtualHost *>'' diventa ''<VirtualHost *:80>''). | Modifichiamo tutti i VirtualHost aggiungendo l'indicazione delle porte (ad esempio: ''<VirtualHost *>'' diventa ''<VirtualHost *:80>''). | ||
Ora creiamo un nuovo file, in | Ora creiamo un nuovo file, in <code>/etc/apache2/sites-available</code> che chiameremo '''dominio.it-ssl''', ed utilizziamo il seguente schema: | ||
<pre> | <pre> | ||
<VirtualHost *:443> | <VirtualHost *:443> | ||
Riga 177: | Riga 177: | ||
</pre> | </pre> | ||
ovviamente adattando le varie opzioni alla situazione reale | ovviamente adattando le varie opzioni alla situazione reale. | ||
Ora provvediamo ad attivarlo: | Ora provvediamo ad attivarlo: | ||
Riga 185: | Riga 185: | ||
==Aggiunta Certificati== | ==Aggiunta Certificati== | ||
I certificati, in questo caso, verranno aggiunti in un file a parte: | I certificati, in questo caso, verranno aggiunti in un file a parte: <code>/etc/apache2/conf.d/ssl.conf</code> con il seguente contenuto: | ||
<pre> | <pre> | ||
SSLCertificateFile ssl/dominio.it.crt | SSLCertificateFile ssl/dominio.it.crt | ||
Riga 192: | Riga 192: | ||
</pre> | </pre> | ||
Per applicare le modifiche è sufficiente riavviare | Per applicare le modifiche è sufficiente riavviare Apache: | ||
<pre> | <pre> | ||
# /etc/init.d/apache2 restart | # /etc/init.d/apache2 restart | ||
Riga 205: | Riga 205: | ||
==Diffusione di CaCert== | ==Diffusione di CaCert== | ||
CaCert inizia ad essere inserito, come certificato root, anche nei vari browser, evidenziando che l'attenzione verso questo progetto sta salendo | CaCert inizia ad essere inserito, come certificato root, anche nei vari browser, evidenziando che l'attenzione verso questo progetto sta salendo. Non resta che adottarlo ed, eventualmente, fare richiesta agli sviluppatori del nostro browser preferito affinche CaCert venga inclusa. | ||
= | = Link = | ||
[http://www.cacert.org '''CaCert.Org'''] | [http://www.cacert.org '''CaCert.Org'''] | ||
[[Categoria:Server]] | [[Categoria:Server]] |
Versione delle 14:34, 9 gen 2010
Introduzione
Chi avrà provato ad installare Apache (o Apache2) con supporto ssl si sarà trovato davanti al problema del certificato: come generarlo? che valore ha? dove posso ottenere un certificato valido? esistono soluzioni gratuite?
Queste sono le domande normali che si pone un utente, soprattutto guardando i prezzi esorbitanti proposti per l'acquisto di certificati SSL.
Generazione del certificato
La generazione di un certificato è un po' macchinosa, ma tutto questo è a favore della sicurezza della procedura.
Per prima cosa è necessario registrarsi su Cacert.Org. Terminata la registrazione (confermando via email la validità del proprio indirizzo email) siamo pronti per iniziare.
Registrazione di un Dominio
Per poter generare un certificato è necessario disporre di un dominio.
- Dopo essersi loggati nel portale si verrà indirizzati nella propria pagina;
- Selezioniamo, a destra, il menù Domini e la voce Aggiungi;
- Inseriamo il dominio (senza www. o altro davanti) e proseguiamo;
- Per poter generare un certificato è necessario verificare che il richiedente sia effettivamente legato al dominio. Per questo motivo sono presenti degli indirizzi email predefiniti a cui inviare l'email di verifica: root@dominio.it, hostmaster@dominio.it, postmaster@dominio.it, admin@lerasole.it, webmaster@lerasole.it.
- All'arrivo dell'email, confermiamo l'aggiunta del dominio.
Generazione csr
Per poter ottenere un certificato è necessario avere una Richiesta di Sottoscrizione del Certificato (Certificate Signing Request, CSR). Per crearla usiamo il seguente comando:
# openssl req -nodes -new -keyout dominio.it.key -out dominio.it.csr
Dove, ovviamente, dominio.it rappresenta il nome del nostro dominio.
Verranno poste le seguenti domande:
Generating a 1024 bit RSA private key ..............++++++ ..................++++++ writing new private key to 'mail.knio.it.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:IT State or Province Name (full name) [Some-State]:Verona Locality Name (eg, city) []:Garda Organization Name (eg, company) [Internet Widgits Pty Ltd]:MaXeR Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:dominio.it Email Address []:admin@dominio.it Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Nota: i dati inseriti sono fittizi, è d'obbligo sostituirli con quelli reali |
Per dare una durata di tempo al certificato aggiungere al comando openssl, -days xxx
dove xxx è il numero di giorni di validità dello stesso.
Ricordate però che il certificato durerà solo 6 mesi, qualsiasi numero venga immesso nel campo -days xxx
, al termine della scadenza occorrerà rinnovare il certificato che sarà nuovamente valido per altri 6 mesi.
Se questa procedura non vi piace, potete farvi certificare da un Accertatore (trovate la lista nel sito cacert dopo esservi loggati): ciò vi permetterà di vedere riconosciuta la vostra identità e ottenere ulteriori benefici, compresa una maggiore durata dei certificati e la possibilità di inserire il vostro nome nei certificati per la posta elettronica.
Verranno generati due file: dominio.it.key
, che rappresenta la chiave privata; dominio.it.csr
che rappresenta la Richiesta di Sottoscrizione del Certificato.
Richiesta del Certificato
Visualizziamo il contenuto del file dominio.it.csr
e copiamolo nel form contenuto in Certificati per i Server (Server Certificates), Nuovo.
Inviamo il contenuto del form e confermiamo. Al termine dell'elaborazione verrà mostrato il codice del certificato (una copia ci verrà inviata anche via email), salviamolo nel file dominio.it.crt
.
Spostiamo i file sul server
Spostiamo i tre file sul server, nella directory /etc/apache/ssl/
nel caso di Apache, /etc/apache2/ssl
nel caso di Apache2.
Verifica del Certificato
Prima di configurare il server è d'obbligo un controllo sulla correttezza del certificato. Per fare questo dobbiamo:
- Scaricare il root certificate daquesto indirizzo
- Copiarlo nella directory
/etc/apache/ssl/
(o/etc/apache2/ssl
nel caso di Apache2) - Eseguire il comando:
openssl verify -CAfile root.crt -purpose sslserver dominio.it.crt
Se tutto è stato eseguito correttamente, il controllo avrà esito positivo.
Rinnovo del certificato
Poco prima della scadenza del certificato (di solito 14 giorni ), riceverete una mail che vi comunicherà il termine del certificato, successivamente se non rinnovate il certificato, riceverete un'altra mail alcuni giorni prima della scadenza.
Nella mail potete trovare il link a cacert: accedete al sito e loggatevi con le vostre credenziali.
Nella finestra Certificati server/visualizza potete vedere i certificati da voi creati, (qui potete anche eliminare vari certificati creati per errore), individuate il certificato da aggiornare, come aiuto se ne avete più di uno potete controllare con la data di scadenza che compare a destra.
Spuntate il certificato da rinnovare e fate click sul pulsante Rinnova.
In pochi secondi il certificato verrà rinnovato e vi comparirà una nuova pagina contenente il nuovo certificato.
Copiate il testo da BEGIN CERTIFICATE a END CERTIFICATE e andate a sostituirlo nel file apache2/ssl/vostro-certificato.crt
e riavviate Apache2
# /etc/init.d/apache2 restart
Ora tornate alla finestra certificati server/visualizza, e verificate che la data del certificato da voi rinnovato sia cambiata.
Se tutto è andato bene avrete altri 6 mesi dalla data di rinnovo.
Apache
Installazione
Apache-ssl rappresenta il demone Apache con il supporto per ssl abilitato. L'installazione è semplice, rappresentando un pacchetto separato da apache normale:
# apt-get install apache-ssl
Configurazione
Prima di installare i certificati è consigliabile mettere mano alla configurazione generica del server, in modo da sistemare quei parametri relativi al dominio, all'amministratore e alla directory radice utilizzata da apache.
Modifica impostazioni base
Il file in questione è /etc/apache-ssl/httpd.conf
. Le voci da adattare alla propria configurazione sono le seguenti:
- ServerName
- indica il dominio al quale dovrà rispondere il server. Nel nostro caso sarà esempio.it.
- ServerAdmin
- l'email dell'amministratore del server. Nel nostro caso sysadmin@esempio.it.
- DocumentRoot
- indica la directory radice in cui si trovano le pagine che verranno mostrate da apache. Nel nostro esempio verrà mantenuto il valore di default.
Aggiunta del Certificato
Il file da modificare è, anche in questo caso, quello principale: /etc/apache-ssl/httpd.conf
. All'interno di questo è presente una sottosezione, preceduta dalla riga
# ----------------------------SSL----------------------------------
All'interno di questa sezione si trovano tutte le voci di configurazione del modulo SSL; quelli che ci interessano, per una configurazione base sono SSLCertificateFile e SSLCertificateKeyFile.
Commentiamo (o modifichiamo) quindi quelle già presenti ed aggiungiamo quelle relative al nostro certificato:
SSLCertificateFile /etc/apache-ssl/ssl/esempio.it.crt SSLCertificateKeyFile /etc/apache-ssl/ssl/esempio.it.key
Salviamo il file e riavviamo apache-ssl.
# /etc/init.d/apache-ssl restart (o reload)
Apache2
Installazione
L'installazione di Apache2 è semplicissima:
# apt-get install apache2
Attivazione del supporto SSL
Per poter usare SSL in Apache2 è necessario attivarlo (visto che non è presente un pacchetto apposito come apache-ssl):
# a2enmod ssl
provvede ad attivare il supporto per SSL.
Creazione VirtualHost
Dobbiamo, ora, creare un VirtualHost che sia in ascolto sulla porta 443.
Prima di procedere, però, dobbiamo modificare il comportamento di Apache relativamente ai NameVirtualHost.
Modifichiamo il file /etc/apache2/apache.conf
e aggiungiamo, prima di
Include /etc/apache2/sites-enabled/[^.#]*
le seguenti righe:
NameVirtualHost *:80 NameVirtualHost *:443
e assicuriamoci che l'opzione NameVirtualHost * sia commentata o rimossa dal file /etc/apache2/sites-available/default
.
Modifichiamo tutti i VirtualHost aggiungendo l'indicazione delle porte (ad esempio: <VirtualHost *> diventa <VirtualHost *:80>).
Ora creiamo un nuovo file, in /etc/apache2/sites-available
che chiameremo dominio.it-ssl, ed utilizziamo il seguente schema:
<VirtualHost *:443> SSLEngine On ServerName dominio.it ServerAdmin admin@dominio.it DocumentRoot /var/www ErrorLog /var/log/apache2/dominio.it-ssl_error.log CustomLog /var/log/apache2/dominio.it-ssl_access.log combined </VirtualHost>
ovviamente adattando le varie opzioni alla situazione reale.
Ora provvediamo ad attivarlo:
# a2ensite dominio.it-ssl
Aggiunta Certificati
I certificati, in questo caso, verranno aggiunti in un file a parte: /etc/apache2/conf.d/ssl.conf
con il seguente contenuto:
SSLCertificateFile ssl/dominio.it.crt SSLCertificateKeyFile ssl/dominio.it.key SSLCertificateChainFile ssl/root.crt
Per applicare le modifiche è sufficiente riavviare Apache:
# /etc/init.d/apache2 restart
Test di funzionamento
Il miglior test è forse il più semplice: aprire un browser e collegarsi all'indirizzo https://esempio.it ;-)
Considerazioni
Limitazioni nell'utilizzo di VirtualHost
La limitazione più pesante che si può notare è l'impossibilità di utilizzare più di un certificato per la stessa accoppiata ip:porta. Il motivo è semplice: i dati inviati sono cifrati, quindi è impossibile, per apache, riuscire ad estrapolare il ServerName... Quindi viene usata l'accoppiata ip:porta per definirlo.
Diffusione di CaCert
CaCert inizia ad essere inserito, come certificato root, anche nei vari browser, evidenziando che l'attenzione verso questo progetto sta salendo. Non resta che adottarlo ed, eventualmente, fare richiesta agli sviluppatori del nostro browser preferito affinche CaCert venga inclusa.