Logo de ce site

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...