Indice Guide: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
Riga 1: Riga 1:
{| width=55% bgcolor=white align=center style=border-style:dotted;border-width:1mm;border-color:lightblue
=Introduzione=
|<center>''Attenzione questo articolo � ancora incompleto o richiede delle verifiche. ''</center>
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?
|}


<includeonly>[[Categoria:Stub]]</includeonly>
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].


In questa guida tratteremo come configurare la scheda PCMCIA '''''U2Speed''''' su ''Debian '''Sarge''''' installata sul mitico Thinkpad T20.
=Generazione del certificato=
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.


==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.


== OS ==
==Generazione csr==
<div align="left" style="width:100%;  border: none; padding: 0.4em;">
Per poter ottenere un certificato � necessario avere una Richiesta di Sottoscrizione del Certificato (Certificate Signing Request, CSR). Per crearla usiamo il seguente comando:
{| cellpadding=5 cellspacing=1 border=0
<pre>
|-
# openssl req -nodes -new -keyout dominio.it.key -out dominio.it.csr
|align=left width=100% style="background-color:#f3f3ff; border:1px solid"|
</pre>
Il sistema operativo Debian Sarge si basa sul '''kernel 2.6.8'''. L'installazione � stata eseguita senza  particolari rilevanti quindi viene utilizzato il sistema di default linux26.
Dove, ovviamente, ''dominio.it'' rappresenta il nome del nostro dominio.
|}
 
</div>
Verranno poste le seguenti domande:
<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


== La rete ==
Please enter the following 'extra' attributes
<div align="left" style="width:100%;  border: none; padding: 0.4em;">
to be sent with your certificate request
{| cellpadding=5 cellspacing=1 border=0
A challenge password []:
|-
An optional company name []:
|align=left width=100% style="background-color:#f3f3ff; border:1px solid"|
</pre>
AccessPoint Router USRobotics USR9110 rende possibile la navigazione WiFi ai terminali circostanti.<br>
''Nota'': si consiglia l'aggiornamento al firmware v5.0 del sopracitato Access Point [http://www.usr-emea.com/support/s-prod-template.asp?loc=itly&prod=9110 download].<br>
Il terminale di nostro interesse � il Thinkpad T20, (os Debian Sarge) con in dotatazione la '''PCMCIA'''
'''Wireless Adapter [http://www.upspeed.net UPspeed]''' sulla quale � installato il chipset  [http://www.marvell.com/ '''Marvell Tecnology'''].
|}
</div>


== Pacchetti specifici necessari ==
{{Box|Nota:|i dati inseriti sono futtizzi, � d'obbligo sostituirli con quelli reali}}
''ndiswrapper-utils''
''ndiswrapper-module-2.6.8-x''
''wireless-tools''
''pcmcia-cs''
''apmd


== SetUp ==
Per dare una durata di tempo al certificato aggiungere al comando openssl , -days xxx
Eseguire
dove xxx sono il numero di giorni di validit� dello stesso
<pre>
# su -
</pre>
per portarci in modalit� root.
Per prima cosa aggiorniamo Apt: osserviamo il file ''/etc/apt/source.list'' e digitiamo ''apt-get update''.
Attraverso l'uso di una Gui come Synaptic (oppure se preferibile attraverso la shell) scarichiamo i pacchetti:<br>
<ul><li>'''ndiswrapper-utils'''</li>
<li>'''ndiswrapper-modules-2.6.8-x''' (se necessario anche ndiswrapper-common)</li>
''N.B.'' Potrebbe essere necessario ricompilare ndiswrapper dai [http://ndiswrapper.sourceforge.net/ sorgenti]
<li>'''wireless-tools'''</li></ul>


A questo punto dopo aver installato il pacchetto '''apmd''':<br>
Verranno generati due file: ''dominio.it.key'', che rappresenta la chiave privata; ''dominio.it.csr'' che rappresenta la Richiesta di Sottoscrizione del Certificato.
<ul><li>Aggiungere al file ''/etc/modules'' la riga ''apm''</li>
<li>Aggiungere nel file ''/boot/grub/menu.lst'' il parametro del kernel ''apm=on''</li></ul><br>


Assicuriamoci che anche il modulo '''pcmcia-cs''' sia installato (lsmod | grep pcmcia-cs).<br><br>
==Richiesta del Certificato==
Visualizziamo il contenuto del file '''dominio.it.csr''' e copiamolo nel form contenuto in ''Certificati per i Server (Server Certificates)'', ''Nuovo''.


Adesso � necessario procurarsi il driver in esame della Marvell Tecnology.<br>
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'''.
Quindi possiamo utilizzare due strade:<br>
1) Utilizzare il driver del cd in dotazione (consiglio i driver per windows98)<br>
2) Scaricare il driver da [http://downloads.trendnet.com/TEW-421PC_B1/Driver/Utility_Driver_TEW-421PC_423PI_b1_2.00.zip questo link]<br>


'''N.B.''' Per questa fase rimando alla dettagliata guida che troviamo [http://guide.debianizzati.org/index.php/NdisWrapper qui]<br>
==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: <pre>openssl verify -CAfile root.crt -purpose sslserver dominio.it.crt</pre>


A questo punto avviamo ndiswrapper
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'':
<pre>
<pre>
# ndiswrapper
# apt-get install apache-ssl
Usage: ndiswrapper OPTION
Manage ndis drivers for ndiswrapper.
-i inffile        Install driver described by 'inffile'
-d devid driver  Use installed 'driver' for 'devid'
-e driver        Remove 'driver'
-l                List installed drivers
-m                Write configuration for modprobe
-hotplug          (Re)Generate hotplug information
</pre>
</pre>


<pre>
==Configurazione==
# ndiswrapper -i /media/cdrom/drivers/nomedriver.inf
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.
</pre>


il driver Ndis � stato installato, per verificare l'insieme dei drivers installati utilizziamo il comando ndiswrapper
===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
<pre>
<pre>
# ndiswrapper -l
# ----------------------------SSL----------------------------------
Installed ndis drivers:
nomedriver driver present
</pre>
</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''.


Adesso inseriamo la scheda PCMCIA UPspeed nella porta e osserviamo come reagisce il sistema.<br>
Commentiamo (o modifichiamo) quindi quelle gi� presenti ed aggiungiamo quelle relative al nostro certificato:
Digitiamo:
<pre>
<pre>
# ndiswrapper -l
SSLCertificateFile /etc/apache-ssl/ssl/esempio.it.crt
Installed ndis drivers:
SSLCertificateKeyFile /etc/apache-ssl/ssl/esempio.it.key
nomedriver driver present, '''hardware present'''
</pre>
</pre>
Salviamo il file e riavviamo apache-ssl.
<pre>
<pre>
# dmesg
# /etc/init.d/apache-ssl restart (o reload)
</pre>
Poi
<pre>
# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
00:02.0 CardBus bridge: Texas Instruments PCI1450 (rev 03)
00:02.1 CardBus bridge: Texas Instruments PCI1450 (rev 03)
00:03.0 Ethernet controller: 3Com Corporation 3c556B CardBus [Tornado] (rev 20)
00:03.1 Communication controller: 3Com Corporation Mini PCI 56k Winmodem (rev 20)
00:05.0 Multimedia audio controller: Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] (rev 01)
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
01:00.0 VGA compatible controller: S3 Inc. 86C270-294 Savage/IX-MV (rev 11)
02:00.0 Ethernet controller: Unknown device 1faa (rev 03)
</pre>
</pre>


A questo punto dobbiamo fare in modo di caricare in memoria il modulo ndiswrapper in modo che lo stesso possa finalmente gestire la nostra scheda Wireless:
=Apache2=
 
==Installazione==
L'installazione di apache2 � semplicissima:
<pre>
<pre>
# modprobe ndiswrapper
# apt-get install apache2
</pre>
</pre>
Se la scheda Wireless viene finalmente inizializzata allora pronta per lavorare, per verificare lo stato dell'interfaccia Wireless utilizziamo l'utility iwconfig (Wireless Tools for Linux - [http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html])


==Attivazione del supporto SSL==
Per poter usare SSL in apache2 necessario attivarlo (visto che non presente un pacchetto apposito come ''apache-ssl''):
<pre>
<pre>
# iwconfig
# a2enmod ssl
lo        no wireless extensions.
eth0      no wireless extensions.
sit0      no wireless extensions.
wlan0    IEEE 802.11g  ESSID:off/any
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:00:00:00:00:00
          Bit Rate:54 Mb/s  Tx-Power:16 dBm
          RTS thr:2347 B  Fragment thr:2346 B
          Encryption key:off
          Power Management:off
          Link Quality:100/100  Signal level:-10 dBm  Noise level:-256 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0  Missed beacon:0
</pre>
</pre>
provvede ad attivare il supporto per SSL.


{{ Warningbox | '''N.B.''' Se i nostri output dei comandi ''iwconfig'' e ''dmesg'' non sono regolari ma differenti da quelli sopra (esempio iwconfig non riconosce la rete wlan0, oppure un errore del tipo **DANGER** relativo al kernel in output a dmesg) allora forse avete incontrato il problema che ha spinto uomolosco a scrivere questa guida. Passiamo quindi direttamente [http://guide.debianizzati.org/index.php/PCMCIA_WiFi_UPspeed_su_Debian_Sarge_on_Thinkpad_T20#Solution qui].<br> }}
==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''.


Bene se ci troviamo a questo punto possiamo dire che il pi� � fatto.
Modifichiamo il file '''/etc/apache2/apache.conf''' e aggiungiamo, prima di
Per consentire alla nostra macchina di caricare il modulo ndiswrapper con il boot del sistema operativo dobbiamo modificare il file ''/etc/modules'' utilizzando sempre l'utility ndiswrapper
<pre>
 
Include /etc/apache2/sites-enabled/[^.#]*
</pre>
le seguenti righe:
<pre>
<pre>
# ndiswrapper -m
NameVirtualHost *:80
Adding "alias wlan0 ndiswrapper" to /etc/modules
NameVirtualHost *:443
</pre>
</pre>
e assicuriamoci che l'opzione ''NameVirtualHost *'' sia commentata o rimossa dal file '''/etc/apache2/sites-available/default'''.


'''N.B.''' E' necessario editare manualmente il file ''/etc/modules'' aggiungendo la riga ''ndiswrapper''.<br>
Modifichiamo tutti i VirtualHost aggiungendo l'indicazione delle porte (ad esempio: ''<VirtualHost *>'' diventa ''<VirtualHost *:80>'').


Per utilizzare una connessione di rete Wireless che dobbiamo procedere con la configurazione della scheda di rete Wireless affinch� la stessa sia in grado di colloquiare con l'access point (AP).
Ora creiamo un nuovo file, in ''/etc/apache2/sites-available''' che chiameremo '''dominio.it-ssl''', ed utilizziamo il seguente schema:
Ora ricorriamo nuovamente all'utilizzo dell'utility iwconfig
<pre>
<VirtualHost *:443>
        SSLEngine On
        ServerName dominio.it
        ServerAdmin admin@dominio.it
        DocumentRoot /var/www


<pre>
        ErrorLog /var/log/apache2/dominio.it-ssl_error.log
# iwconfig -h
        CustomLog /var/log/apache2/dominio.it-ssl_access.log combined
Usage: iwconfig interface [essid {NN|on|off}]
</VirtualHost>
                          [nwid {NN|on|off}]
                          [mode {managed|ad-hoc|...}
                          [freq N.NNNN[k|M|G]]
                          [channel N]
                          [ap {N|off|auto}]
                          [sens N]
                          [nick N]
                          [rate {N|auto|fixed}]
                          [rts {N|auto|fixed|off}]
                          [frag {N|auto|fixed|off}]
                          [enc {NNNN-NNNN|off}]
                          [power {period N|timeout N}]
                          [txpower N {mW|dBm}]
                          [commit]
</pre>
</pre>


in alto possiamo visualizzare alcune delle opzioni che utilizzeremo per configurare al meglio la nostra scheda di rete Wireless, in particolare utilizzeremo le seguenti impostazioni
ovviamente adattando le varie opzioni alla situazione reale...


Ora provvediamo ad attivarlo:
<pre>
<pre>
# iwconfig wlan0 rate auto
# a2ensite dominio.it-ssl
# iwconfig wlan0 mode managed
# iwconfig wlan0 channel 11
# iwconfig wlan0 key s:WEP_KEY enc open
# iwconfig wlan0 essid nome_nodo
</pre>
</pre>


a questo punto dovremmo attivare l'interfaccia di rete wlan0 per collegarci con l'AP (access point)
==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>
<pre>
# ifconfig wlan0 up
SSLCertificateFile ssl/dominio.it.crt
SSLCertificateKeyFile ssl/dominio.it.key
SSLCertificateChainFile ssl/root.crt
</pre>
</pre>


ora non ci resta che farci assegnare un indirizzo IP dall'AP utilizzando il nostro client dhcp
Per applicare le modifiche � sufficiente riavviare apache:
Buona navigazione tra i fili!!!
<pre>
<pre>
# dhclient wlan0
# /etc/init.d/apache2 restart
</pre>
</pre>


== Solution ==
=Test di funzionamento=
lspci -n da inserire l'output<br>
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.


lspci -vv da inserire l'output<br>
=Bookmark=
A questo punto � necessario osservare
[http://www.cacert.org '''CaCert.Org''']