View Single Post
Old 23-05-2006, 13:14   #1
udK
Member
 
L'Avatar di udK
 
Iscritto dal: Mar 2006
Cittā: Svizzera
Messaggi: 74
[Tutorial] Apache + SSL in ambiente Windows

Per questioni di lavoro, 2 anni fa mi trovai costretto a dover implementare al webserver Apache2 il supporto per il protocollo https tramite OpenSSL in ambiente Windows.
Cercando in rete non trovai molte informazioni in merito; da qua l'idea di partire dalla fonte, prendere Apache2 e implementargli direttamente OpenSSL, da qui nacque ApacheSSL.

Senza dilungarmi troppo vediamo cosa ci occorre per far girare assieme al nostro Apache il sistema SSL.

1) Scaricare una delle versioni (Apache, Apache2.0 o Apache2.2) di ApacheSSL dal sito ufficiale.

2) Una volta scaricato ed estratto l'archivio copiare la cartella ApacheSSL in C:\

3) Aprire con l'editor preferito il file di configurazione, httpd.conf che si trova all'interno della cartella conf

4) Localizzare la riga #LoadModule ssl_module modules/mod_ssl.so e decommentarla togliendo il # iniziale.

5) Localizzare la riga Listen 80 e subito sotto aggiungere:
Listen 443

6) Creare 2 virtual host, uno per le connessioni su porta standard (80) e l'altro per le connessioni protette sulla porta 443, a fine del file httpd.conf aggiungiamo:

<VirtualHost localhost:80>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot C:\ApacheSSL\htdocs
</VirtualHost>

<VirtualHost localhost:443>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot C:\ApacheSSL\htdocs
SSLEngine On
SSLCertificateFile conf/ssl/localhost.cert
SSLCertificateKeyFile conf/ssl/localhost.key
</VirtualHost>

Salviamo e chiudiamo.

Fino a questo punto niente di complicato, ora arriva il momento di creare un certificato di prova.


Apriamo il prompt dei comandi, Start -> Esegui -> cmd [invio]
Spostiamoci nella cartella bin di ApacheSSL digitando cd C:\ApacheSSL\bin


Eseguiamo i seguenti 3 comandi:

openssl req -config openssl.cnf -new -out localhost.csr
openssl rsa -in privkey.pem -out localhost.key
openssl x509 -in localhost.csr -out localhost.cert -req -signkey localhost.key -days 365


Soffermiamoci un momento su questi 3 passaggi per spiegare cosa č stato fatto;

openssl req -config openssl.cnf -new -out localhost.csr
Questo crea una richiesta di certificazione del certificato e ne crea una vostra chiave privata che fa riferimento al nome del vostro dominio e del certificato stesso, pertanto se alla richiesta del browser il nome del certificato e il nome del vostro dominio non corrispondono il browser vi darā un messaggio di avviso: Il nome del certificato di protezione non č valido o non corrisponde al nome del sito.

openssl rsa -in privkey.pem -out localhost.key
Questo passaggio legge dal file di input la chiave privata per scriverla in localhost.key mediante RSA

openssl x509 -in localhost.csr -out localhost.cert -req -signkey localhost.key -days 365
Questo ultimo passaggio genera un certificato auto firmato che potete usare per le prove. Il certificato ha una validitā di 365 giorni, se volete prolungarne la durata incrementate il numero dei giorni in base alle vostre esigenze.

I files creati che saranno necessari sono localhost.key e localhost.cert che si trovano in C:\ApacheSSL\bin. Creiamo nella directory C:\ApacheSSL\conf una cartella chiamata ssl e succesivamente ci copieremo all'interno i files localhost.key e localhost.cert


L'ultimo passo č quello d'installare il servizio di ApacheSSL tra i vari del sistema.
Sempre dal prompt dei comandi, puntato in C:\ApacheSSL\bin eseguiamo:

apache.exe -k install (per Apache e Apache 2.0)
httpd.exe -k install (per Apache 2.2)

Se tutto č andato bene il prompt vi deve restituire una scritta come questa:
Installing the ApacheSSL service
The ApacheSSL service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.


Ora aprite il monitor (ApacheMonitor.exe, solo per Apache 2+) di ApacheSSL e fate lo start, se tutto č andato bene dovreste avere una server signature simile:
ApacheSSL/2.2.x (win) mod_ssl/2.2.2 OpenSSL/0.9.8b

Per testare la connessione sotto SSL vi basta puntare il browser su https://localhost:443

E' tutto!

Note:
Se utilizzate Internet Explorer 7 e tentate di aprire una connessione su https://localhost:443 IE non ne sarā molto felice, vi dirā che il certificato non č valido e sicuro ecc ecc, vi basta cliccare su:

Continue to this website (not recommended).

per continuare senza problemi ma nella barra degli vi verrā mostrata la scritta "Certificate Error".


Riferimenti:
-------------
- Sito ufficiale di Apache (ASF) http://www.apache.org
- Sito ufficiale di OpenSSL http://www.openssl.org
- Sito ufficiale del progetto ApacheSSL http://apachessl.sf.net

Ultima modifica di udK : 03-06-2009 alle 15:07.
udK č offline   Rispondi citando il messaggio o parte di esso