Installation SSL sur Apache et redirection HTTPS avec .htaccess

Apache HTTP Server reste l'un des serveurs web les plus répandus et assure la prise en charge du SSL grâce au module mod_ssl. Dans ce guide, nous voyons pas à pas comment déclarer votre certificat dans un VirtualHost et comment rediriger le HTTP vers le HTTPS avec .htaccess.

Fichiers et module nécessaires

Apache attend les éléments du certificat dans des directives distinctes :

  • SSLCertificateFilecertificate.crt (certificat du serveur)
  • SSLCertificateKeyFileprivate.key (clé privée)
  • SSLCertificateChainFileca_bundle.crt (chaîne intermédiaire)

Si vous ne disposez pas de ces fichiers, vous pouvez valider votre nom de domaine avec notre assistant SSL gratuit et télécharger ces trois fichiers depuis le paquet ZIP (ainsi que le fichier combiné fullchain.pem si vous le souhaitez).

Vérifiez d'abord que le module mod_ssl est activé :

sudo a2enmod ssl
sudo systemctl restart apache2

Étape 1 — Placez les fichiers

sudo mkdir -p /etc/apache2/ssl/alanadiniz.com
sudo cp certificate.crt /etc/apache2/ssl/alanadiniz.com/
sudo cp private.key      /etc/apache2/ssl/alanadiniz.com/
sudo cp ca_bundle.crt    /etc/apache2/ssl/alanadiniz.com/
sudo chmod 600 /etc/apache2/ssl/alanadiniz.com/private.key

Étape 2 — Configurez le VirtualHost

Définissez un hôte virtuel pour le port 443 (par ex. /etc/apache2/sites-available/alanadiniz-ssl.conf) :

<VirtualHost *:443>
    ServerName alanadiniz.com
    ServerAlias www.alanadiniz.com
    DocumentRoot /var/www/alanadiniz.com

    SSLEngine on
    SSLCertificateFile      /etc/apache2/ssl/alanadiniz.com/certificate.crt
    SSLCertificateKeyFile   /etc/apache2/ssl/alanadiniz.com/private.key
    SSLCertificateChainFile /etc/apache2/ssl/alanadiniz.com/ca_bundle.crt

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

    <Directory /var/www/alanadiniz.com>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Remarque : à partir d'Apache 2.4.8, il est aussi valable d'utiliser un fullchain.pem avec la chaîne intermédiaire intégrée directement dans SSLCertificateFile, au lieu de SSLCertificateChainFile.

Image : <configuration VirtualHost Apache dans un éditeur>
VirtualHost configuré avec les directives SSL pour le port 443.

Étape 3 — Activez le site et testez

sudo a2ensite alanadiniz-ssl.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

La sortie de configtest doit indiquer Syntax OK. Sur les systèmes RHEL/CentOS, le nom du service est httpd et le répertoire est /etc/httpd/.

Étape 4 — Redirection HTTPS avec .htaccess

Ajoutez la règle suivante au fichier .htaccess situé à la racine de votre site. Elle redirige définitivement (301) toutes les requêtes HTTP vers le HTTPS :

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Vérifiez le bon fonctionnement de la redirection depuis le terminal :

curl -I http://alanadiniz.com

Vous devez voir dans la réponse les lignes 301 Moved Permanently et Location: https://....

Problèmes fréquents

  • « AH02572: Failed to configure ... no private key » : le chemin de SSLCertificateKeyFile est incorrect ou la clé est corrompue.
  • Avertissement de chaîne dans le navigateur : SSLCertificateChainFile n'est pas défini ; ajoutez ca_bundle.crt.
  • .htaccess ignoré : AllowOverride All doit être défini dans le bloc Directory correspondant.

Résumé

Sur Apache, le SSL se résume à faire pointer les trois directives (SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile) vers les bons fichiers et à mettre en place une redirection 301 avec .htaccess. Vous pouvez créer vos fichiers avec notre assistant SSL gratuit et les télécharger depuis le ZIP.