Indice Guide: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Riga 1: Riga 1:
=Introduzione=
{{stumb}}
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].
==Intro==
Questa e' la traccia della guida che scrivero'<br>


=Generazione del certificato=
=== Installazione PVM ===
La generazione di un certificato � un po' macchinosa, ma tutto questo � a favore della sicurezza della procedura.
*Installare pvm e pvm-dev
root@insanelab-cluster:apt-get install pvm
root@insanelab-cluster:apt-get install pvm-dev


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.
*modificare /etc/profile aggiungendo: <br>


==Registrazione di un Dominio==
#variable for PVM
Per poter generare un certificato � necessario disporre di un dominio.
PVM_ROOT=/usr/lib/pvm3
* Dopo essersi ''loggati'' nel portale si verr� indirizzati nella propria pagina;
export PVM_ROOT<br>
* Selezioniamo, a destra, il men� '''Domini''' e la voce '''Aggiungi''';
PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`
* Inseriamo il dominio (senza ''www.'' o altro davanti) e proseguiamo;
export PVM_ARCH<br>
* 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''.
PVM_RSH=/usr/bin/ssh
* All'arrivo dell'email, confermiamo l'aggiunta del dominio.
export PVM_RSH<br>
PVM_TMP=/tmp
export PVM_TMP<br>
#Add pvm binary to PATH
PATH=$PVM_ROOT/bin:$PATH
export PATH<br>


==Generazione csr==
*Modificare il file LINUX.def inserendo il modo che usiamo per connetterci (ssh)
Per poter ottenere un certificato � necessario avere una Richiesta di Sottoscrizione del Certificato (Certificate Signing Request, CSR). Per crearla usiamo il seguente comando:
<pre>
# openssl req -nodes -new -keyout dominio.it.key -out dominio.it.csr
</pre>
Dove, ovviamente, ''dominio.it'' rappresenta il nome del nostro dominio.


Verranno poste le seguenti domande:
nano /usr/lib/pvm3/conf/LINUX.def
<pre>
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
#LINUX.def
to be sent with your certificate request
ARCHCFLAGS      =      -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\'''"/usr/bin/ssh\"''' \
A challenge password []:
                                -DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS \
An optional company name []:
                                -DCTIMEISTIMET -DSYSERRISCONST
</pre>


{{Box|Nota:|i dati inseriti sono futtizzi, � d'obbligo sostituirli con quelli reali}}
=== Configurazione sistema ===


Per dare una durata di tempo al certificato aggiungere al comando openssl , -days xxx
*Editare /etc/hosts '''commentatando localhost''' e aggiungendo i nodi
dove xxx sono il numero di giorni di validit� dello stesso


Verranno generati due file: ''dominio.it.key'', che rappresenta la chiave privata; ''dominio.it.csr'' che rappresenta la Richiesta di Sottoscrizione del Certificato.
#/etc/hosts
#127.0.0.1      localhost.localdomain  localhost      insanelab-cluster
  192.168.100.69 insanelab-cluster
  192.168.100.3  node3
  192.168.100.5  node5
  192.168.100.2  node2


==Richiesta del Certificato==
*Creare un utente per ogni nodo
Visualizziamo il contenuto del file '''dominio.it.csr''' e copiamolo nel form contenuto in ''Certificati per i Server (Server Certificates)'', ''Nuovo''.
root@nodeX:adduser user


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'''.
=== Evitare la password con ssh ===
*Bisogna generare una chiave nel server (edalab-cluster)  


==Spostiamo i file sul server==
user@insanelab-cluster: ssh-keygen -t rsa
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==
*entrare nella directory /home/user/.ssh/
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: <pre>openssl verify -CAfile root.crt -purpose sslserver dominio.it.crt</pre>


Se tutto � stato eseguito correttamente, il controllo avr� esito positivo.
user@insanelab-cluster: cd /home/user/.ssh


=Apache=
*copiare id_rsa.key in tutti i nodi
==Installazione==
''Apache-ssl'' rappresenta il demone Apache con il supporto per ssl abilitato. L'installazione � semplice, rappresentando un pacchetto ''separato'' da apache ''normale'':
<pre>
# apt-get install apache-ssl
</pre>


==Configurazione==
user@insanelab-cluster: scp id_rsa user@nodeX://home/user/.ssh
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===
*Loggarsi nei nodi
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>
# ----------------------------SSL----------------------------------
</pre>
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:
ssh user@nodeX
<pre>
SSLCertificateFile /etc/apache-ssl/ssl/esempio.it.crt
SSLCertificateKeyFile /etc/apache-ssl/ssl/esempio.it.key
</pre>


Salviamo il file e riavviamo apache-ssl.
*Entrare nella directory .ssh e copiare la chiave in authorizedkey2
<pre>
# /etc/init.d/apache-ssl restart (o reload)
</pre>


=Apache2=
cd .ssh
==Installazione==
cat id_rsa.key >> authorizedkey2
L'installazione di apache2 � semplicissima:
rm id_rsa.key
<pre>
# apt-get install apache2
</pre>


==Attivazione del supporto SSL==
*Riavviare ssh ed e' fatta!
Per poter usare SSL in apache2 � necessario attivarlo (visto che non � presente un pacchetto apposito come ''apache-ssl''):
<pre>
# a2enmod ssl
</pre>
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
<pre>
Include /etc/apache2/sites-enabled/[^.#]*
</pre>
le seguenti righe:
<pre>
NameVirtualHost *:80
NameVirtualHost *:443
</pre>
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:
<pre>
<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>
</pre>
 
ovviamente adattando le varie opzioni alla situazione reale...
 
Ora provvediamo ad attivarlo:
<pre>
# a2ensite dominio.it-ssl
</pre>
 
==Aggiunta Certificati==
I certificati, in questo caso, verranno aggiunti in un file a parte: '''/etc/apache2/conf.d/ssl.conf''' con il seguente contenuto:
<pre>
SSLCertificateFile ssl/dominio.it.crt
SSLCertificateKeyFile ssl/dominio.it.key
SSLCertificateChainFile ssl/root.crt
</pre>
 
Per applicare le modifiche � sufficiente riavviare apache:
<pre>
# /etc/init.d/apache2 restart
</pre>
 
=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=
[http://www.cacert.org '''CaCert.Org''']

Versione delle 17:20, 22 ott 2006

Template:Stumb

Intro

Questa e' la traccia della guida che scrivero'

Installazione PVM

  • Installare pvm e pvm-dev
root@insanelab-cluster:apt-get install pvm
root@insanelab-cluster:apt-get install pvm-dev
  • modificare /etc/profile aggiungendo:
#variable for PVM
PVM_ROOT=/usr/lib/pvm3
export PVM_ROOT
PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch` export PVM_ARCH
PVM_RSH=/usr/bin/ssh export PVM_RSH
PVM_TMP=/tmp export PVM_TMP
#Add pvm binary to PATH PATH=$PVM_ROOT/bin:$PATH export PATH
  • Modificare il file LINUX.def inserendo il modo che usiamo per connetterci (ssh)
nano /usr/lib/pvm3/conf/LINUX.def
#LINUX.def
ARCHCFLAGS      =       -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\"/usr/bin/ssh\" \
                               -DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS \
                               -DCTIMEISTIMET -DSYSERRISCONST

Configurazione sistema

  • Editare /etc/hosts commentatando localhost e aggiungendo i nodi
#/etc/hosts 
#127.0.0.1      localhost.localdomain   localhost       insanelab-cluster
 192.168.100.69 insanelab-cluster
 192.168.100.3  node3
 192.168.100.5  node5
 192.168.100.2  node2
  • Creare un utente per ogni nodo
root@nodeX:adduser user

Evitare la password con ssh

  • Bisogna generare una chiave nel server (edalab-cluster)
user@insanelab-cluster: ssh-keygen -t rsa
  • entrare nella directory /home/user/.ssh/
user@insanelab-cluster: cd /home/user/.ssh
  • copiare id_rsa.key in tutti i nodi
user@insanelab-cluster: scp id_rsa user@nodeX://home/user/.ssh


  • Loggarsi nei nodi
ssh user@nodeX
  • Entrare nella directory .ssh e copiare la chiave in authorizedkey2
cd .ssh
cat id_rsa.key >> authorizedkey2
rm id_rsa.key
  • Riavviare ssh ed e' fatta!