-
Sécuriser Apache2 avec SSL
Le SSL (Secure Socket Layer) est un protocole assurant une transmission sécurisée des données sur un site web.
Le protocole SSL est destiné au cryptage des données. Il permet de vérifier l'authentification, la confidentialité et l'intégrité des données échangées.
Tutoriel réalisé sous Ubuntu server 11.04
Un certificat SSL (Secure Socket Layer) est un fichier spécial qui est installé sur un serveur web. Ce certificat permet de crypter les données émises par le serveur web afin d'en protéger la confidentialité
Les certificats SSL sont le moyen le plus utilisé pour crypter des données entre un serveur web et un navigateur web
Il est possible d'obtenir des certificats certifiés par une autorité officielle mais leurs prix peut être élévés, et il sera plus interessant d'utiliser un certificat auto-signé.
Certains navigateurs afficheront des messages d'avertissement informant que le certificat est auto-signé et qu'il n'est pas reconnu par une autorité officielle. il faudra alors passer l'avertissement, afin que cela fonctionne.
Avant toute chose si le serveur HTTP Apache2 n'est pas installé :
sudo apt-get install apache2
(cliquer pour ouvrir l'image)
Une fois Apache2 installé, on teste son fonctionnement depuis un navigateur.
(cliquer pour ouvrir l'image)
Mise en place du SSL.
Il faut tout d'abord activer le module SSL à l'aide de la commande :
sudo a2enmod ssl
(cliquer pour ouvrir l'image)
Le module SSL s'active alors.
(cliquer pour ouvrir l'image)
Une fois le module SSL activé, recharger la configuration d'Apache2 avec la commande :
sudo /etc/init.d/apache2 reload
(cliquer pour ouvrir l'image)
(cliquer pour ouvrir l'image)
Créer un certificat
La création du certificat auto-signé s'effectue avec la commande suivante :
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/localhost.pem
(cliquer pour ouvrir l'image)
Une fenêtre va s'ouvrir pour demander le nom d'hôte à utiliser dans le certificat SSL.
Ici, j'ai laissé le nom par défaut mais il peut être composé d'hôte suivi du nom de domaine (apache2.com par exemple).
(cliquer pour ouvrir l'image)
Configurer Apache2
Se placer dans le dossier de configuration des sites apache avec la commande suivante :
cd /etc/apache2/sites-available/
(cliquer pour ouvrir l'image)
Recopier la configuration par défaut pour la nouvelle configuration ssl avec la commande suivante :
sudo cp default ssl
(cliquer pour ouvrir l'image)
Assigner le port ssl (port443):
sudo sed -i '1,2s/\*:80/*:443/' ssl
(cliquer pour ouvrir l'image)
Ajouter les directives SSLEngine On et SSLCertificateFile /etc/ssl/private/localhost.pem à la configuration avec la commande suivante :
sudo sed -i "3a\\\tSSLEngine On\n\tSSLCertificateFile /etc/ssl/private/localhost.pem" ssl
*SSLCertificateFile : définit le certificat authentifiant le serveur auprès des clients.
*SSLEngine On : active l'utilisation du moteur de protocole SSL / TLS.
(cliquer pour ouvrir l'image)
Activer la configuration du site SSL avec la commande suivante :
sudo a2ensite ssl
(cliquer pour ouvrir l'image)
Maintenant on peut tester à nouveau le serveur Apache2 et vérifier que celui-ci écoute sur le port HTTPS.
Le navigateur affiche un message d'avertissement informant que le certificat est auto-signé et qu'il n'est pas reconnu par une autorité officielle.
Dans ce cas cliquer sur "je comprends les risques" puis sur "ajouter une exception"
Dans la fenêtre qui apparaît, le navigateur demande de conserver cette exception de façon permanente et de confirmer l'exception de sécurité.
On peut conserver ou non cette exception de façon permanente et une fois le choix effectué, on peut alors confirmer l'exception de sécurité.
(cliquer pour ouvrir l'image)
(cliquer pour ouvrir l'image)
L'accès au serveur web en mode HTTPS fonctionne correctement.
(cliquer pour ouvrir l'image)
Il est également possible de vérifier le certificat en cliquant sur "Voir"
(cliquer pour ouvrir l'image)
Dans la partie Général, on peut voir entre autres le nom commun du certificat (renseigné lors de la création du certificat auto-signé) et la date de validité du certificat .
(cliquer pour ouvrir l'image)
Dans la partie Détails, on peut voir que le certificat utilisé est un standard de cryptographie PKCS#1 RSA 2048 bits (voir liens concernant la cryptographie)
(cliquer pour ouvrir l'image)
(cliquer pour ouvrir l'image)
En savoir plus sur « la cryptographie »
En savoir plus sur « les standards de cryptographie à clé publique »
Ce tutoriel a permis de fournir accès sécurisé (https) à un site avec une configuration de base.
Evidemment, il existe d'autres options pour sécuriser Apache2 ( pour le protéger d'une attaque par déni de service par exemple..).
Cela pourra faire l'objet d'un prochain tutoriel....
Tags : ssl, ouvrir, cliquer, image, certificat
-
Commentaires