Activer un accès https sur apache

Afin de sécuriser les accès à une page de login sur un serveur Web mail, je voulais rediriger le trafic http sur le port https, et donc dire au serveur Apache d'écouter sur ce port. La configuration se fait en plusieurs étapes :

  • Création d'un certificat, qui sera utilisé par le serveur http(s)
  • Activation du SSL pour Apache
  • Configuration d'un Virtual Host apache

Voyons ces étapes dans l'ordre.

Création d'un certificat

La création d'un certificat auto-signé, sous Linux, est assez simple dès que l'on a installé le paquet openssl.

# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/mailserver.crt -keyout /etc/ssl/private/mailserver.key

On précise ici que l'on veut un nouveau certificat, qui va durer 365 jours (sinon c'est 30 jours par défaut), de type X509, et le nom et l'emplacement des fichiers de certificat et de clé privé.

Cette commande va demander la saisie de plusieurs paramètres. Le plus important est le name (Common Name). Il faut mettre à ce niveau le nom complet du host. Par exemple pour un serveur accédé par l'URL webmail.mondomaine.com

Common Name (eg, YOUR name) [] : webmail.mondomaine.com

Remarque : il s'agit ici de certificat auto-signé. Généralement cela signifie que les navigateurs internet vont émettre une alerte de sécurité. Comme c'est pour un usage interne, on peut s'en satisfaire. Dans le cas d'un site public, il vaut mieux avoir un certificat signé par une autorité de confiance.

On sécurisé l'accès au fichier de clés privés :

# chmod 440 /etc/ssl/private/mailserver.key

Activation du SSL pour apache

L'action se fait simplement par l'activation du module mod_ssl :

a2enmod ssl

Création du Virtual Host

On va ensuite créer un virtual host pour notre URL, qui écoute sur le port 443:

# vhost https
<VirtualHost *:443>
  DocumentRoot /var/www/webmail
  ServerName  webmail.mondomaine.com

  ServerSignature Off
  ErrorLog ${APACHE_LOG_DIR}/error_webmail.log      
  LogLevel info      
  CustomLog ${APACHE_LOG_DIR}/access_webmail.log combined      

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/mailserver.crt
  SSLCertificateKeyFile /etc/ssl/private/mailserver.key
</VirtualHost>

Puis on active le site et on redémarre apache :

a2ensite webmail
/etc/init.d/apache2 reload

 

Catégorie