Utiliser mod_ssl avec Apache

Dernière mise à jour : 19/05/2004

    Cet article va tenter de vous démontrer qu'il ne faut pas avoir peur de mod_ssl sous Apache. Mod_ssl est un projet visant à intégrer un module sécurisé (https) avec Apache. J'ai pour cela utilisé une Debian Woody mais il ne devrait pas être dur de l'adapter à votre distribution. Vous devez bien sûr avoir un serveur Apache en état de marche, je ne rentrerais donc pas dans la configuration de celui-ci (faîtes http://localhost) pour vous assurer qu'il tourne. Enfin, il est important de savoir que mod_ssl n'est pas lié à OpenSSL, ce sont deux projets différents. Tout est d'ailleurs expliqué sur le site officiel que je vous invite à visiter

    Il nous faut tout d'abord installer mod_ssl, cette procédure ultra-complexe se symbolise par un : apt-get install libapache-mod-ssl qui devrait vous retourner une partie de ceci :
Bien que mod_ssl installe lui même ses certificats, il est préférable de créer le sien. Ainsi, allez dans /etc/apache et commencez donc la manipulation des certificats. On commence donc par générer la clé privée du serveur (les lignes en italiques sont les réponses de la machine). Attention, dans cette étape, il est primordial d'avoir un mot de passe sécurisé et que vous n'oublierez pas car il servira pour générer les certificats par la suite.


    Vous devez ensuite retirer le mot de passe de la clé, pour se faire, utilisez :

    Vous devez ensuite générer le Certificat qui sera affiché lors de la connexion sécurisée, pour se faire, il suffit de taper la commande qui suit. Vous pouvez entrer les valeurs du certificat par défaut en éditant le fichier /usr/lib/ssl/openssl.cnf, comme ça ce sera fait une fois pour toutes.

    Vous n'avez sans doute pas besoin de faire signer le certificat par une autorité compétente si c'est pour un usage personnel, vous pouvez alors le signer vous même comme suit :

    Bravo, la partie création de certificats est terminée, il nous faut à présent copier server.pem et server.crt dans un répertoire pour apache. faîtes donc : mkdir /etc/apache/certs/ && cp server.{pem,crt} /etc/apache/certs. Libre à vous de mettre ça ailleurs, c'est ma méthode pour le faire. Comme vous l'aurez remarqué, nous n'avons pas encore touché à la configuration Apache. Editez donc /etc/apache/httpd.conf et assurez vous d'ajouter les directives suivantes aux bons endroits :

    Voila pour la configuration, la partie VirtualHost est secondaire mais j'en avais besoin sur mon serveur. Il ne reste alors qu'à redémarrer votre petit serveur apache par /etc/init.d/apache restart. Juste pour le fun, connectez vous alors sur https://localhost. En cas d'échec, pensez toujours à vérifier /var/log/apache/access.log et error.log (apache devient httpd sous d'autres distributions). Voici ce que vous devriez obtenir si tout va bien :

    Près d'un an après l'écriture de cet article, Eric (un lecteur) a eu la bonne idée de m'envoyer une petite astuce que je vais vous donner ici afin de ne pas avoir à rentrer de mot de passe lors du démarrage du serveur apache. Il vous suffit pour cela de retirer l'encryption du certificat comme ceci :

    Votre configuration mod_ssl touche à sa fin. Un code 200 dans les accès signifie que la page a été correctement délivrée au client. Cet article est bien sûr adaptable à d'autres distributions mais devrait vous fournir une bonne base pour mettre en place rapidement votre serveur sécurisé en place.