Etape 2 : configuration d'Apache2

Activation du module ssl

Il est nécessaire dans un premier temps d'activer le module ssl :

a2enmod ssl
Module ssl installed; run /etc/init.d/apache2 force-reload to enable

Comme on vous le demande, relisez la configuration du serveur.

La commande ls /etc/apache2/mods-enabled/ donne partiellement ceci :

ssl.conf
ssl.load

Configuration du port

Ajoutez au fichier /etc/apache2/ports.conf la ligne suivante :

Listen 443

Configuration du virtual host

Nous allons faire fonctionner sur notre serveur simultanément des virtualhost fonctionnant sous HTTP (sur le port 80) et des virtualhost fonctionnant sous HTTPS (sur le port 443). Dès lors que l'on a des serveurs virtuels qui "tournent" sur des ports différents, il est obligatoire de préciser pour chaque serveur virtuel son port . Aussi, dans le fichier /etc/apache2/site-available/default , il faut modifier :

NameVirtualHost * devient  NameVirtualHost *:80 
<VirtualHost *> devient <VirtualHost *:80> pour chaque virtualhost
<VirtualHost adr_IP> devient <VirtualHost adr_IP:80> pour chaque virtualhost

Profitez-en pour effacer le virtualhost correspondant au ServerName : wiki.domain1.org puisque c'est celui que l'on va configurer en HTTPS.

Il est possible de rajouter la configuration du virtualhost devant fonctionner sous ssl dans le fichier /etc/apache2/site-available/default, mais nous allons garder l'esprit modulaire et créer un fichier de conf spécifique /etc/apache2/site-available/default-ssl.

Voici ce que vous devez trouvez au minimum dans le fichier /etc/apache2/site-available/default-ssl (les commentaires et/ou explications éventuelles précèdent les directives)

#La déclaration du virtualhost.
#Attention : mettre bien une "*" et NON une adresse IP car 
#on ne peut trouver qu'une seule fois la directive 
#NameVirtualHost adresseIP :Port et nous l'avons déjà dans 
#le fichier "default".

NameVirtualHost *:443

#Du coup : mettre aussi ici une "*" car sinon vous allez 
#avoir le warning suivant très horripilant :  
#NameVirtualHost *:443 has no VirtualHosts

<VirtualHost *:443>
ServerName wiki.domain1.org
DocumentRoot /home/web/wiki

#Les directives pour les certificats

SSLEngine On
SSLCertificateFile    /etc/apache2/ssl/servwiki.crt
SSLCertificateKeyFile /etc/apache2/ssl/servwiki.key

#Les directives qui suivent ne sont pas obligatoires mais
#aident au débugage
#On isole les erreurs relatives à http
#Attention : il faut créer le fichier "error_ssl.log"

ErrorLog /var/log/apache2/error_ssl.log
LogLevel warn

</VirtualHost>

Il est nécessaire maintenant d'activer le site : a2ensite default-ssl

Attention : ne pas oublier de relire ensuite la configuration de même qu'à chaque modification ultérieure du fichier.

Vous pouvez maintenant "passer" à la phase de test...

A partir d'un navigateur sur votre poste client :

https://wiki.domain1.org

Votre page devrait s'afficher normalement.

Si vous avez une alerte de sécurité, c'est que vous avez mal réalisé une étape. Selon l'alerte, reprenez l'étape correspondante.

Si ça ne fonctionne pas vous pouvez même mettre le LogLevel à "debug" ou "info" à la place de "warn" puis dans une console : "tail -f /var/log/apache2/error_ssl.log" pour voir quels sont les problèmes qui surviennent quand vous rechargez la lecture de la configuration.

Une autre commande peut vous aiguiller sur une éventuelle erreur : openssl s_client -connect prof.btsinfo.fr:443

Vous pouvez maintenant revoir, dans la partie cours, le schéma concernant le protocole SSL et l'application HTTP (fig 1.7).