| Apache2 - Mod SSL |
|
Prérequis : - un serveur web Apache2 (pas le 1 !) et un site web sur lequel on désire mettre en place le https:// - openssl d'installé (sinon l'installer avec votre gestionnaire de paquet, sous Debian c'est : apt-get install openssl )
0. A quoi bon du SSL ?Le SSL permet de crypter les échanges HTTP. Par défaut (http), toutes les données que vous échangez avec un serveur web passent en clair sur Internet. Cela inclu le contenu des pages web visitées mais aussi les informations transmises par 'POST4, càd ce que vous mettez dans un formulaire. Par exemple quand vous vous loguez sur un forum avec vos identifiants login/mot de passe. Les deux transitent vers le serveur web et sont lisibles. Le HTTPS permet de crypter ces informations avec une clé que seul le serveur web possède. Plus d'infos sur ce système ici. Bref, cela rend vos données illisibles en cours de route et cela certifie à vos visiteurs qu'ils arrivent sur le von serveur (il est possible de les rediriger vers un serveur pirate sans qu'ils ne le remarquent). 1. Le certificat et l'autorité.Le SSL fonctionne ainsi : on a besoin d'un certificat et une clé. La clé, chacun peut la générer sur son serveur. Ensuite, il faut signer cette clé avec un certificat. Deux possibilités : la signer soit-même ou faire appel à une autorité de certification reconnue mondialement. Les services de ces autorités sont payants. Dans le premier cas, les visiteurs du HTTPS verront un message désagréable de leur navigateur disant que l'autorité (qui est votre serveur) n'est pas reconnue comme officielle. Dans le cas payant, ils ne verront pas ce message. Si on possède un site web avec une partie administration sensible, générer un certificat soit-même est suffisant. Si on veut en faire bénéficier les visiteurs, il vaut mieux en acheter un. OVH propose des certificats au prix attractif de 39,99€ HT par an (lien).
2. Activer le support SSL sous Apache2C'est très simple, une seule commande : a2enmod ssl ; /etc/init.d/apache2 force-reload
3. Générer et signer un certificat soit-même.On doit faire 3 choses : générer la clé, créer une autorité de certification (càd le certificat qui va pouvoir signer notre clé) et enfin signer la clé. On commence par se placer dans un répertoire où on va stocker nos clés : cd /etc/apache2 puis mkdir cles-ssl && cd cles-ssl . On crée une nouvelle clé RSA :
Puis sur base de cette clé on crée le certificat : r10013:/etc/apache2/cles-ssl# openssl req -new -key cle.key -out cle.csr Et enfin, on peut signer notre certificat(pour 10 ans comme ça on a la paix) :
On a donc : r10013:/etc/apache2/cles-ssl# ls Il reste quelques réglages : donner les bons droits à ces clés :
4. Mettre en place le HTTPS.Il va falloir éditer le fichier de configuration du VirtualHost correspondant au site web qu'on veut passer en SSL. Sous Apache2, ces fichiers se trouvent dans /etc/apache2/sites-available : On prend le virtualhost du HTTP, on en fait un copier/coller que l'on modifie ainsi: AVANT : <VirtualHost VOTRE_IP:80> APRES :
Et on oublie pas de modifier le chemin de cle.crt et cle.key si on a pas choisi le même que dans ce tuto (si vous avez acheté un certificat il suffit de créer un fichier, d'y mettre son contenu et c'est fait). Rajout du NameVirtualHost : si c'est la première fois que vous rajoutez un HTTPS sur un des sites web de votre machine, il faudra ajouter la directive suivante tout au début du fichier de conf (/etc/apache2/sites-available/) : NameVirtualHost VOTRE_IP:443 ATTENTION : c'est bien un rajout de VirtualHost qu'il faut faire, pas une modification de celui déjà présent (sinon votre site ne répondra plus qu'en HTTPS et pas en HTTP). 5. Supplément : réaliser une redirection.Pour ceux qui veulent exploiter uniquement le HTTPS et créer une redirection http://domaine.com ---> https://domaine.com, il faut supprimer le VirtualHost écoutant sur le port 80 et y mettre à la place : <VirtualHost VOTRE_IP:80> Pour toutes questions, suggestions, merci de poster sur nos forums.
|