Comment configurer Apache pour utiliser HTTPS

Publié le 14 Juin 2014

Apache permet d'utiliser des transactions sécurisées avec SSL (ou TLS) en utilisant des techniques de cryptographies basées sur un échange de clé et de certificat.

Obtenir un certificat

Donc avant de commencer il va falloir se procurer un certificat, soit en le générant nous-même, soit en le récupérant depuis une autorité reconnue.

La première option est gratuite mais comme le certificat ne pourra pas être vérifié automatiquement une fenêtre demandra à l'utilisateur de vérifier le certificat lui-même avant de pouvoir accèder au site. C'est suffisant pour une phase de développement ou de tests mais pas vraiment utilisable en production.

La deuxième option permet d'éviter tous ces inconvénients moyennant quelque paiement.

Dans les 2 cas la génération du certificat (ou de la demande de certificat) se fait avec openssl.

Pour générer un certificat:

openssl req -new -x509 -days 1095 -sha1 -newkey rsa:1024 -nodes -keyout server.key -out server.crt -subj '/O=Organisation/OU=Departement/CN=www.monsite.com'

Cette commande permet de générer les clés ainsi que le certificat associé.

Si on veut un certificate provenant d'une autorité reconnue il ne faut pas utiliser l'option -x509 ni -days.

Cette commande génère les clés dans le fichier server.key et le certificat (ou la demande) dans le fichier monsite.crt

Configurer Apache

La configuration d'apache se trouve dans /etc/apache2/httpd.conf.

Dans ce fichier il faut que les lignes suivantes soit présentes (non commentées):

LoadModule ssl_module libexec/apache2/mod_ssl.so
...
Include /etc/apache2/extra/httpd-ssl.conf

Dans le fichier /etc/apache2/extra/httpd-ssl.conf vérifier que les lignes suivantes pointe bien vers les fichiers contenant les clés/certificat:

Listen 80   # port http
Listen 443 # port https
...
SSLCertificateFile "/private/etc/apache2/
...
SSLCertificateKeyFile "/private/etc/apache2/server.key"

Au niveau des droits le fichier server.key doit être accessible uniquement en lecture par root.

Le fichier server.cert peut être lisible par tout le monde.

-rw-r--r--  1 root  wheel    928 14 Jun 17:43 server.crt
-r--------  1 root  wheel    887 14 Jun 17:43 server.key

Ensuite il faut simplement redémarrer le serveur apache:

apachectl restart

Rédigé par Bliz

Publié dans #Linux

Repost 0
Commenter cet article