Apache, SSL e CaCert.Org: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Riga 1: Riga 1:
{{stub}}
=Introduzione=
=Introduzione=
Ci 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?
Ci 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].
==Cos' un certificato==
==Come funziona?==


=Generazione del certificato=
=Generazione del certificato=
La generazione di un certificato un po' macchinosa, ma tutto questo a favore della sicurezza della procedura.
La generazione di un certificato è un po' macchinosa, ma tutto questo è a favore della sicurezza della procedura.


Per prima cosa necessario [https://www.cacert.org/index.php?id=1&lang=it_IT registrarsi] su [http://www.cacert.org/index.php?id=0&lang=it_IT Cacert.Org]. Terminata la registrazione (confermando via email la validit� del proprio indirizzo email) siamo pronti per iniziare.
Per prima cosa è necessario [https://www.cacert.org/index.php?id=1&lang=it_IT registrarsi] su [http://www.cacert.org/index.php?id=0&lang=it_IT Cacert.Org]. Terminata la registrazione (confermando via email la validità del proprio indirizzo email) siamo pronti per iniziare.


==Registrazione di un Dominio==
==Registrazione di un Dominio==
Per poter generare un certificato necessario disporre di un dominio.  
Per poter generare un certificato è necessario disporre di un dominio.  
* Dopo essersi ''loggati'' nel portale si verr� indirizzati nella propria pagina;
* Dopo essersi ''loggati'' nel portale si verrà indirizzati nella propria pagina;
* Selezioniamo, a destra, il men� '''Domini''' e la voce '''Aggiungi''';
* Selezioniamo, a destra, il menù '''Domini''' e la voce '''Aggiungi''';
* Inseriamo il dominio (senza ''www.'' o altro davanti) e proseguiamo;
* 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''.  
* 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.
* All'arrivo dell'email, confermiamo l'aggiunta del dominio.


==Generazione csr==
==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:
Per poter ottenere un certificato è necessario avere una Richiesta di Sottoscrizione del Certificato (Certificate Signing Request, CSR). Per crearla usiamo il seguente comando:
<pre>
<pre>
# openssl req -nodes -new -keyout dominio.it.key -out dominio.it.csr
# openssl req -nodes -new -keyout dominio.it.key -out dominio.it.csr
Riga 34: Riga 29:
Visualizziamo il contenuto del file '''dominio.it.csr''' e copiamolo nel form contenuto in ''Certificati per i Server (Server Certificates)'', ''Nuovo''.
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'''.
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 file sul server==
Riga 40: Riga 35:


==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'' dall'indirizzo http://www.cacert.org/certs/root.crt
* Scaricare il ''root certificate'' dall'indirizzo http://www.cacert.org/certs/root.crt
* Copiarlo nella directory '''/etc/apache/ssl/''' (o '''/etc/apache2/ssl''' nel caso di apache2)
* Copiarlo nella directory '''/etc/apache/ssl/''' (o '''/etc/apache2/ssl''' 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>


Se tutto stato eseguito correttamente, il controllo avr� esito positivo.
Se tutto è stato eseguito correttamente, il controllo avrà esito positivo.


=Apache=
=Apache=
==Installazione==
==Installazione==
''Apache-ssl'' rappresenta il demone Apache con il supporto per ssl abilitato. L'installazione semplice, rappresentando un pacchetto ''separato'' da apache ''normale'':
''Apache-ssl'' rappresenta il demone Apache con il supporto per ssl abilitato. L'installazione è semplice, rappresentando un pacchetto ''separato'' da apache ''normale'':
<pre>
<pre>
# apt-get install apache-ssl
# apt-get install apache-ssl
Riga 55: Riga 50:


==Configurazione==
==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.
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===
===Modifica impostazioni base===
Il file in questione '''/etc/apache-ssl/httpd.conf'''. Le voci da adattare alla propria configurazione sono le seguenti:
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''.
; 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''.
; 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.
; 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===
===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
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
<pre>
<pre>
# ----------------------------SSL----------------------------------
# ----------------------------SSL----------------------------------
Riga 70: Riga 65:
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''.
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:
Commentiamo (o modifichiamo) quindi quelle già presenti ed aggiungiamo quelle relative al nostro certificato:
<pre>
<pre>
SSLCertificateFile /etc/apache-ssl/ssl/esempio.it.crt
SSLCertificateFile /etc/apache-ssl/ssl/esempio.it.crt
Riga 83: Riga 78:
=Apache2=
=Apache2=
==Installazione==
==Installazione==
L'installazione di apache2 semplicissima:
L'installazione di apache2 è semplicissima:
<pre>
<pre>
# apt-get install apache2
# apt-get install apache2
Riga 89: Riga 84:


==Attivazione del supporto SSL==
==Attivazione del supporto SSL==
Per poter usare SSL in apache2 necessario attivarlo (visto che non presente un pacchetto apposito come ''apache-ssl''):
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 98: Riga 93:
Dobbiamo, ora, creare un VirtualHost che sia in ascolto sulla porta 443.
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''.  
Prima di procedere, però, dobbiamo modificare il comportamento di Apache relativamente ai ''NameVirtualHost''.  


Modifichiamo il file '''/etc/apache2/apache.conf''' e aggiungiamo, prima di  
Modifichiamo il file '''/etc/apache2/apache.conf''' e aggiungiamo, prima di  
Riga 141: Riga 136:
</pre>
</pre>


Per applicare le modifiche sufficiente riavviare apache:
Per applicare le modifiche è sufficiente riavviare apache:
<pre>
<pre>
# /etc/init.d/apache2 restart
# /etc/init.d/apache2 restart
Riga 147: Riga 142:


=Test di funzionamento=
=Test di funzionamento=
Il miglior test è forse il più semplice: aprire un browser e collegarsi all'indirizzo https://esempio.it ;-)


=Considerazioni=
=Considerazioni=
==Limitazioni nell'utilizzo di VirtualHost==
==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==
==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.
==Pruomuovere CaCert==
 


=Bookmark=
=Bookmark=
[http://www.cacert.org '''CaCert.Org''']
[http://www.cacert.org '''CaCert.Org''']

Versione delle 13:46, 12 set 2005

Introduzione

Ci 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 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 dall'indirizzo http://www.cacert.org/certs/root.crt
  • 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.

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.

Bookmark

CaCert.Org