Ti trovi qui : Appunti » Apache, virtual host multipli e ssl

Apache, virtual host multipli e ssl

Scrivo questo post nella speranza che possa essere utile a qualcuno, visto che io ci ho perso due giorni per trovare tutte le info necessarie e fare varie prove fino a trovare la configurazione funzionante. Inoltre potrebbe anche servire a me in futuro come promemoria.

Lo scenario è il seguente: un server web (apache), due domini diversi sullo stesso ip configurati come virtual host e, infine, la necessità di averne uno su ssl e l’altro no. Inoltre tutte le chiamate http sul dominio con ssl devono essere redirette ad https e tutte quelle https sul dominio non ssl devono essere redirette ad http.

Se non è chiaro quello che ho detto sopra lo schematizzo meglio:

un
server web; due domini che chiameremo protetto.it e vulnerabile.it; protetto.it dovrà lavorare su ssl e quindi l’accesso sarà del tipo https://protetto.it; vulnerabile.it non lavorerà su ssl e quindi l’accesso sarà del tipo http://vulnerabile.it; tutte le chiamate del tipo http://protetto.it saranno redirette a https://protetto.it; tutte le chiamate del tipo https://vulnerabile.it saranno redirette a http://vulnerabile.it.

Questo è quanto. Vediamo come configurarlo. L’esempio suppone che utilizziate apache con i file di configurazione separata httpd.conf (configurazioni generali), httpd-vhosts.conf (configurazioni virtual hosts) e httpd-ssl.conf (configurazioni ssl) ma il tutorial vale anche nel caso in cui utilizziate un solo file di configurazione.

Nel file httpd-vhosts.conf inseriamo quanto segue:

NameVirtualHost *:80

<VirtualHost *:80> ServerName www.protetto.it:80 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L] </VirtualHost>

<VirtualHost *:80> DocumentRoot /PATH/SITO/VULNERABILE.IT ServerName www.vulnerabile.it:80 RewriteEngine On RewriteCond %{HTTPS} !=off RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [R,L] </VirtualHost>

Nel file httpd-ssl.conf inseriamo quanto segue:

NameVirtualHost *:443

<VirtualHost *:443> DocumentRoot /PATH/SITO/PROTETTO.IT ServerName www.protetto.it:443 </VirtualHost>

<VirtualHost *:443> ServerName www.vulnerabile.it:443 SSLEngine off RewriteEngine On RewriteCond %{REQUEST_PORT} !^443$ RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [R=301,L] </VirtualHost>

Vediamo un po’ a cosa servono le direttive inserite.

Con il blocco nel file httpd-vhosts.conf vogliamo “intercettare” le richieste sulla porta 80 (http):

il primo rigo è necessario per dire che vogliamo configurare i virtual host del tipo name-based (con l’uso di ServerName); il primo virtual host serve per far si che tutte le chiamate http su protetto.it dovranno essere redirette su https; il secondo virtual host serve per definire il dominio vulnerabile.it e far si che tutte le chiamate su https vengano redirette su http.

Il blocco nel file httpd-ssl.conf “intercetta” le richieste sulla porta 443 (ssl):

per il primo rigo vale lo stesso discorso di sopra; il primo virtual host definisce semplicemtne il dominio protetto.it; il secondo virtual host serve per far in modo che le chiamate https a vulnerabile.it vengano redirette su http.

N.B.: chiaramente sono state illustrate solo le direttive necessarie ad ottenere la configurazione descritta all’inizio. Tutte le altre opzioni (settaggi openssl, certificati, chiavi, ecc.) vengono date per note e già inserite.



giovedì, luglio 10 2008
Taggato come Appunti, SSL, apache, openssl, virtual host

Scritto da raphe







CHI E' L'AUTORE?



Casinò Games Loan Casinò Poker Mutui Prestito Language Identification
Twitter Whois
Tumblr Sitemap
TopOfBlogs TopOfBlogs