Python e Vim: differenze tra le versioni

nessun oggetto della modifica
(completato)
Nessun oggetto della modifica
Riga 1: Riga 1:
=Introduzione=
= Introduzione: I Tasti Multimediali =
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?
I moderni sistemi multimediali ci forniscono una serie di tasti per scelte rapide che fino a poco tempo fa non erano contemplate.
Possiamo alzare il volume, far partire il player preferito o modificare la luminosit� dello schermo semplicemente con un tasto.
Purtroppo ogni produtore (sia in campo desktop che laptop) produce quasto tipo di controllo a sua descrizione, creando tastiere non-standard che vanno configurate in modo diverso di caso in caso.


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].
Per fare ci� vi sono vari metodi: uno di questi � mostrato in [[Tasti Multimediali: configurazione ed uso|questa guida]].
Noi invece utilizzeremo Hotkeys.


=Generazione del certificato=
= Preparazione del sistema =
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.
La preparazione del sistema molto semplice, necessitiamo infatti solo di '''hotkeys''' e '''xev'''.
Mentre ''xev'' � probabilmente gi� installato (incluso nei pacchetti del server X) dovremo andare ad installare il demone hotkeys alla [[debian-way]]:


==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:
<pre>
<pre>
# openssl req -nodes -new -keyout dominio.it.key -out dominio.it.csr
# apt-get install hotkeys
</pre>
</pre>
Dove, ovviamente, ''dominio.it'' rappresenta il nome del nostro dominio.


Verranno poste le seguenti domande:
= Come Funziona Hotkeys =
 
Hotkeys legge dei file con estensione ''.def'' che si trovano nella directory '''/usr/share/hotkeys'''. In questi file sono specificati i tasti (tramite il loro [[keycode]]) e l'applicazione che devono lanciare. Vi sono gi� parecchi file .def pre-impostati. Se avrete fortuna sar� sufficiente lanciare uno di questi per far funzionare la vostra tastiera. Per visualizzare la lista dei layout di tastiera disponibili, � possibile lanciare hotkeys con il flag "-l":
 
<pre>
<pre>
Generating a 1024 bit RSA private key
$ hotkeys -l
..............++++++
  mx2500      - Memorex MX2500 Keyboard
..................++++++
  inspiron8100 - Dell Inspiron 8100 Notebook
writing new private key to 'mail.knio.it.key'
  kbp8993      - Chicony KBP-8993 keyboard
-----
  ...
You are about to be asked to enter information that will be incorporated
  ipanel      - Asus IPanel
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 []:
</pre>
</pre>


{{Box|Nota:|i dati inseriti sono futtizzi, � d'obbligo sostituirli con quelli reali}}
Nel caso in cui la vostra tastiera non sia presente in elenco, potrete modificare un file ''.def'' o crearne uno nuovo da zero.


Per dare una durata di tempo al certificato aggiungere al comando openssl , -days xxx
== Lanciare hotkeys ==
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.
Il comando per lanciare un dato file ''.def'' con hotkeys � il seguente:


==Richiesta del Certificato==
<pre>
Visualizziamo il contenuto del file '''dominio.it.csr''' e copiamolo nel form contenuto in ''Certificati per i Server (Server Certificates)'', ''Nuovo''.
$ hotkeys -t nomefile
</pre>


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'''.
ad esempio nel caso del file ''prova.def'':


==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>
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>
# apt-get install apache-ssl
$ hotkeys -t prova
</pre>
</pre>


==Configurazione==
== Configurare hotkeys ==
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===
Nel caso in cui la vostra tastiera non fosse inclusa nell'elenco delle tastiere supportate non vi rester� che editare un file ''.def'' o crearne uno voi stessi.
Il file in questione � '''/etc/apache-ssl/httpd.conf'''. Le voci da adattare alla propria configurazione sono le seguenti:
Ecco dove entra in campo ''xev''!
; ServerName : indica il dominio al quale dovr� rispondere il server. Nel nostro caso sar� ''esempio.it''.
Lanciando xev, infatti
; 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>
# ----------------------------SSL----------------------------------
$ xev
</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''.


Commentiamo (o modifichiamo) quindi quelle gi� presenti ed aggiungiamo quelle relative al nostro certificato:
la pressione di ogni tasto produrr� un output sul terminale in cui sar� segnato il keycode del tasto premuto.
<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.  
[[Immagine:Xev.jpg|thumb|center|Esempio]]
<pre>
# /etc/init.d/apache-ssl restart (o reload)
</pre>


=Apache2=
Sar� cos� elementare aprire l'editor di testo preferito ed assegnare il comando al valore determinato con xev nel file ''.def''
==Installazione==
L'installazione di apache2 � semplicissima:
<pre>
# apt-get install apache2
</pre>


==Attivazione del supporto SSL==
Per poter usare SSL in apache2 necessario attivarlo (visto che non presente un pacchetto apposito come ''apache-ssl''):
<pre>
<pre>
# a2enmod ssl
/usr/share/hotkeys# nano prova.def
</pre>
provvede ad attivare il supporto per SSL.


==Creazione VirtualHost==
<?xml version="1.0"?>
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''.
<definition>


Modifichiamo il file '''/etc/apache2/apache.conf''' e aggiungiamo, prima di
  <config model="prova Internal Keyboard">
<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>'').
    <VolUp      keycode="158"/>
    <VolDown    keycode="165"/>
    <Mute      keycode="166"/>


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>
</pre>


ovviamente adattando le varie opzioni alla situazione reale...
== Note ==


Ora provvediamo ad attivarlo:
Dato che probabilmente la tastiera in uso sar� sempre la stessa pu� essere utile creare uno [[creare uno script d'avvio|script]] per avviare automaticamente hotkeys all'accensione del pc e posizionarlo nella cartella ''~/.config/autostart'' [http://www.freedesktop.org (Standard freedesktop).]
<pre>
# a2ensite dominio.it-ssl
</pre>


==Aggiunta Certificati==
L'opzione ''-Z'' aggiunta alla stringa di lancio eviter� il fastidioso splash screen del programma.
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>
<pre>
# /etc/init.d/apache2 restart
$ hotkeys -Z -t prova
</pre>
</pre>


=Test di funzionamento=
-----
Il miglior test � forse il pi� semplice: aprire un browser e collegarsi all'indirizzo https://esempio.it ;-)
Autore: [[Utente:Jango|jango]]
 
=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=
[[Categoria:Desktop]]
[http://www.cacert.org '''CaCert.Org''']
[[Categoria:Hardware]]
1 760

contributi