Certificat SSL/TLS: installation sous apache

jeudi 19 avril 2018

Nous allons voir ici comment intégrer les certificats SSL/TLS sous Apache et toute la configuration de base à mettre en place.

Premièrement sous Debian nous retrouvons la configuration Apache dans /etc/apache2/.

Vous trouverez donc dans le dossier sites-enabled les fichiers de configuration pour chaque sites se trouvant sur le serveur et actifs!
En réalité, ce dossier ne contient que des liens symboliques vers des fichiers .conf se trouvant dans le dossier sites-available qui représentent toutes les configurations de sites disponibles sur le serveur apache mais pas nécessairement pris en compte!
Je vous conseille pour une meilleure visibilité de créer un fichier de configuration pour chaque site présent sur le serveur.

Apache port d’écoute

Vérifier que votre serveur Apache écoute bien sur le port 443 en allant dans le fichier de configuration /etc/apache2/ports.conf

<IfModule ssl_module>
        Listen 443
</IfModule>

Activer module ssl

Concernant donc la mise en place de notre certificat nous allons devoir tout d’abord nous assurer que le module ssl d’apache est bien actif:

a2enmod ssl

De nouveau cette ligne de commande va simplement faire un lien symbolique dans le dossier mods-enabled du module ssl.load et ssl.conf vers le fichier se trouvant dans le dossier mods-available.

Configuration serveur Apache

Nous allons donc créé un nouveau fichier .conf pour la configuration de notre certificat au nom de notre site dans le dossier sites-available en copiant le fichier default-ssl.conf

Voici les informations minimales à retrouver dedans:

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/xxx/public/
                ServerName www.xxx.be
                ServerAlias xxx.be

                <Directory "/var/www/xxxx/">
                        Options FollowSymLinks MultiViews
                        AllowOverride All
                        Order allow,deny
                        Allow from all
                </Directory>
                SSLEngine on
                SSLCertificateFile     /etc/ssl/certs/xxx.pem
                SSLCertificateKeyFile /etc/ssl/private/xxx.key
                SSLCACertificateFile /etc/apache2/chaineinter/xxx_CA.crt
...
        </VirtualHost>
</IfModule>

Il faut donc bien sur s’assurer que le module ssl est bien activé sans quoi vous aurez une erreur de connexion depuis le navigateur sur votre serveur. On définit aussi sur quel port (443) nous allons écouter et appliquer cette configuration de notre virtualhost.
Dans ce virtualhost, il faut remettre la configuration de base concernant votre serveur web en http (80) avec les directives DocumentRoot – Servername – ServerAlias – Directory.

il ne faut pas oublier la directive Options FollowSymLinks sinon le certificat ne sera présent que sur la homepage et non l’ensemble du site.

On s’assure aussi que la directive SSLEngine est à on !

Et enfin il faut définir le chemin vers

  • Le certificat du site au format .pem
  • La clé publique du site (.key)
  • Le certificat (crt) d’autorité intermédiaire (CA)

Je vous conseilles de bien mettre ces fichiers dans les dossiers stipulés et pour le certificat intermédiaire créer le dossier chaineinter pour séparer ces fichiers.

Pour plus de compréhension concernant la nécessité de ces fichiers je vous invite à suivre ce lien

Il vous reste maintenant à mettre les bons fichiers reçu par l’autorité de certificat aux bons endroits et de convertir le fichier .crt du certificat d’entreprise en fichier .pem via la ligne de commande suivante:

openssl x509 -in xxx.crt -out xxx.pem

Activer la configuration Apache

Maintenant vous avez créé un fichier de configuration pour le serveur apache sans l’avoir appliquer:

a2ensite xxx.conf

De nouveau cette ligne de commande va simplement faire un lien symbolique dans le dossier sites-enabled du fichier de configuration xxx.conf vers le fichier se trouvant dans le dossier sites-available afin qu’Apache maintenant en tient compte.

/etc/init.d/apache2 restart

on redémarre Apache pour appliquer la configuration

Vérification

Maintenant, il vous reste a vérifier sur votre navigateur si le mot sécurisé en vert s’affiche à la gauche de votre barre d’adresse et de consulter le certificat afin de vous assurer que tout est en ordre.

Sinon je vous invite aussi à utiliser ce lien pour tester que tout est en ordre au niveau de votre certificat.

Redirection HTTP to HTTPS

Si vous souhaitez que votre site ne soit plus accessible qu’en https, il suffit de rajouter le code suivant dans le fichier de configuration de votre site en http:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

Tags: Apache , Certificat , SSL , TLS