Accueil > GnuLinux Debian/Ubuntu > https sur apache 2
https sur apache 2
jeudi 10 janvier 2013
Configurer apache2 pour faire du https
vendredi 4 avril 2008, par patrick Deflandre
Quels sont les étapes à suivre pour fournir un site protégé par un encryptage ssl ?
Arrêt de apache
Avant de commencer toute manipulation sur les fichiers de configuration apache, commençont par arrêter le serveur :
# /etc/init.d/apache stop
Activer le module ssl
Dans un premier temps, il faut activer ssl. Le module ssl faisant maintenant partie de apache, il suffit pour l’activer d’utiliser la commande a2enmod
# a2enmod ssl
Créer un hôte virtuel pour le site en https
Il faut maintenant créer un hôte virtuel pour le site devant être mise en ligne en utilisant ssl. Celui ci sera en effet accessible par le port 443, et il faut donc le dire à apache. Si vous désirez que votre site soit accessible aussi bien en http qu’en https, il va falloir créer deux hôtes virtuels : un pour le port 80 et un pour le port 443.
Ajoutons un fichier mondomaine.https dans /etc/apache2/sites-available contenant en plus des lignes habituelles les lignes suivantes :
Attention : La ligne NameVirtualHost *:443 ne doit apparaître qu’une seule fois dans l’ensemble des fichiers contenus dans le répertoire sites-available. Il ne faut donc l’ajouter qu’une seule fois si vous hébergé plusieurs sites en ssl.
Ajouter l’hôte virtuel nouvellement créé
Une fois terminé la configuration de l’hôte virtuel, on peut l’ajouter à la liste des sites à servir au démarrage de apache.
# a2ensite mondomaine.https
Ouvrir le port 443
Il faut encore demander à apache d’accepter les connexions sur le port 443. Pour cela, on modifiera sous Debian le fichier /etc/apache2/ports.conf, en ajoutant la ligne
Listen 443
Iptables
On oubliera pas de modifier les règles IPtables dans le cas ou l’on utilise netfilter. Rien ne sert de configurer apache pour accepter les connexions sur le port 443 si on oublie d’autoriser les connexions dans netfilter...
Effectuer une demande de certificat
Pour utiliser votre site en https, il va vous falloir encore une clef privée et un certificat authentifiant votre site.
Le certificat est normalement émis par un organisme officiel sous forme crypté qui garantira la correspondance entre la clef privé et le certificat présent sur votre serveur. Il est cependant possible de générer soit même un certificat si on accepte qu’il ne sera pas possible de vérifier l’authenticité d’un site de façon automatique par un navigateur internet.
Pour simplifier, votre protection ne sera pas absolue, car il est encore possible d’usurper votre nom de site. Il sera de plus demandé à la première connexion à un site non identifié par un organisme officiel si vous souhaiter accepter le certificat qui n’a pas été accepté automatiquement par le navigateur. Cependant, si vous acceptez définitivement le certificat, toute tentative d’usurpation de votre nom de domaine sera dés lors détectée.
Bon, attaquons nous au vif du sujet .
On commence donc par la clef privée :
La clef privée peut-être protégé ou non par un mot de passe.
Avantage : la clef ne peut pas être utilisée sans ce mot de passe difficile à trouver, et donc vous protège efficacement d’une usurpation de celle ci.
Inconvénient : à chaque démarrage du serveur apache, il vous faudra entrer le mot de passe associé à la clef. Il n’est donc pas très facile de redémarrer un serveur car il faut être disponible à ce moment là, ce qui n’est pas toujours possible. De plus, c’est l’ensemble du serveur qui restera inactif. Les autres sites resteront aussi inaccessible.
On se place dans le répertoire de son choix destiné à accueillir la clef et le certificat du site. Puis on lance la commande :
# openssl genrsa -des3 -out mondomaine.key 1024
On peut alors choisir un mot de passe. Ce mot de passe protégera la clef. Si vous ne souhaitez pas créer de mot de passe, il faut alors enlever l’option -des3
On continue par l’établissement d’une demande de certificat
# openssl req -new -key mondomaine.key -out mondomaine.csr
Il vous sera posé des questions sur votre entreprise et activité. Remplisser les avec soins car les réponses apparaîtront dans le certificat final.
Pour exemple :
Création du certificat
Il est maintenant temps de créer un certificat. Deux solutions s’offrent à vous :
Vous souhaitez faire établir votre certificat par un organisme officiel. Seul un certificat établi par un de ces organismes sera automatiquement reconnu par un navigateur internet.
Pour cela, il vous faudra faire parvenir à cette organisme le fichier mondomaine.csr. Je n’ai jamais fait cette démarche et ne peux donc vous fournir plus de détails...
Vous destinez votre site à une utilisation personnel ou toutefois à quelques personnes de votre connaissance. Il est alors tolérable d’établir vous même le certificat, en admettant que vous serez avertit par votre navigateur internet lorsque vous vous connecterez au site que le certificat n’a pas été émis par un organisme certifié. Vous pourrez cependant l’accepter pour une session ou plus, et ce certificat vous garantira la confidentialité des échanges.
Pour créer vous même le certificat : Si vous avez opter pour la création par vous même du certificat, la commande suivante est à effectuer :
# openssl x509 -req -days 365 -in mondomaine.csr -signkey mondomaine.key -out mondomaine.crt
Installation du certificat
Il vous reste plus qu’à installer votre certificat et votre clef privée dans le répertoire /etc/ssl
# cp mondomaine.crt /etc/ssl/certs
# cp mondomaine.key /etc/ssl/private
Démarrage de apache
Et enfin à redémarrer votre serveur web :
# /etc/init.d/apache start
Si vous avez protégé votre clef par un mot de passe, vous serez alors invité à saisir celui-ci.
Test de l’installation
Normalement, vous devriez maintenant accéder aussi bien en http et https à votre site.
P.-S.
Dernière petite remarque :
Si vous hébergez vous même votre site derrière une "box" adsl, n’oubliez pas d’autoriser la connexion sur le port 443 en indiquant éventuellement l’adresse IP de votre serveur interne.
Sinon tous vos efforts seront réduit à néant, silencieusement de plus...