Comment installer le protocole http sécurisé ? Une seule version d’Apache pour gérer le http et le https

Il existe une version d’Apache intégrant naturellement le SSL (sans utilisation de module donc). Nous allons donc dans ce tutorial étudier l’installation de cette version d’Apache. A quoi sert le SSL ? Vous l’avez déjà rencontré en achetant sur Internet par exemple. Il s’agit d’un protocole http sécurisé et par conséquent on accède à des zones sécurisées par une url du genre https://www.ledomaine.com

Installation

L’installation d’Apache-ssl est des plus simples sur Debian, en plus l’installeur est gentil et il nous génére automatiquement un certificat SSL

apt-get install apache-ssl

Plusieurs paquetages supplémentaire seront peut être installé, si apt-get ne trouve pas les paquetages faites un

apt-get update

avant d’installer Apache-ssl.

L’installeur vous demande plusieurs paramètres pour le certificat SSL, entrez-ce que vous voulez et finissez l’installation.

Normalement tout est bien configuré et vous pouvez déjà accéder en sécurisé à votre page de démarrage en tapant

https://Ip de votre serveur

En théorie, un seul serveur Apache tourne sur votre configuration (celle que vous venez d’installer) mais vous pouvez très bien faire tourner la version classique (apache) et la version ssl (apache-ssl). Toutefois, sachez que la version ssl peut très bien gérer les domaines comme la version classique ( nous verrons cela plus loin ) donc inutile de surcharger votre système avec deux serveurs.

Ajout de domaines.

Nous ajoutons la gestion de plusieurs domaines dans notre Apache sécurisé avec l’installation de virtualhost dans le httpd.conf

vi /etc/apache-ssl/httpd.conf

Nous n’allons pas revenir en profondeur dans la gestion du multi domaine avec Apache que nous faisons déjà dans ce tutorial. On rajoute donc autant de VirtualHost que de domaines souhaités.

<VirtualHost www.votredomaine.com:443>

ServerAlias votredomaine.com www.votredomaine.com

DocumentRoot /var/www/dossier/

ServerName www.votredomaine.com

SSLEnable

</VirtualHost>

Nous configurons notre VirtualHost pour le port 443 (port par défaut du protocole https) en lui donnant donc le nom de domaine qu’il doit gérer. Ainsi que le répertoire racine du site (DocumentRoot) et la valeur que renvoi le serveur (ServerName).

La mention SSLEnable ou SSLDisable permet simplement d’indiquer si le SSL doit être actif ou non. En théorie, comme nous écoutons le port 443 pour ce VirtualHost, on a tout intérêt à mettre SSLEnable car sinon on aura droit à une jolie page introuvable. D’ailleurs cette mention peut se trouver en dehors d’un VirtualHost. On peut donc enlever le SSL dans la configuration globale et l’autoriser dans un VirtualHost. D’ailleurs nous vous conseillons de procéder ainsi.

Si vous voulez gérer un domaine normal (sans de protocole sécurisé), vous devez d’abord indiquer à Apache d’écouter le port 80 en rajoutant la directive

Listen 80

Ensuite configurez un VirtualHost avec un port 80. Ainsi vous pouvez gérer les deux protocoles avec une seule configuration d’Apache et un seul serveur.

Un peu plus loin.

L’installeur d’Apache nous a créé une clef mais en fait celle-ci est valide qu’un mois et de toute façon on peut vouloir en refaire une autre. Pour cela on utilise openssl qui a été installé en même temps qu’Apache.

On créé d’abord notre certificat, lorsque le prompt vous demande le Common Name, mettez le nom de votre certificat.

cd /etc/ssl

openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem –days 365

On créé ensuite dans le même répertoire une clef SSL pour Apache. Ici lorsque le prompt vous demande votre Common Name faite bien attention à mettre le nom de votre machine (ou localhost).

openssl req -new -config ./openssl.cnf -nodes -out ./apache-req.pem -keyout ./apache-key.pem

Ensuite on signe notre clef SSL avec notre certificat.

openssl x509 -req -in apache-req.pem -out apache-cert.pem -signkey apache-key.pem \ -CA cacert.pem -CAkey private/cakey.pem -CAcreateserial -days 365

La commande ci-dessus génère donc une clef et un certificat pour une durée de 365 jours. Mais nous avons créé ici deux fichiers alors que nous en avions qu’un seul. En fait, il suffit simplement de changer quelques paramètres dans le httpd.conf d’apache.

vi /etc/apache-ssl/httpd.conf

On change la ligne SSLCertificateFile avec notre nouveau certificat

SSLCertificateFile /etc/apache-ssl/apache.pem

On décommente la ligne SSLCertificateKeyFile et on y ajoute le chemin de notre clef

SSLCertificateKeyFile /etc/apache-ssl/apache-key.pem

Comme d’habitude, on redémarre notre Apache

apache-sslctl graceful

Normalement si vous avez respecté la procédure, Apache doit redémarrer avec les nouveaux paramétres. Vérifiez bien dans /var/log/apache-ssl/error.log si c’est le cas.