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 :
- SSLCertificateFile →
certificate.crt(certificat du serveur) - SSLCertificateKeyFile →
private.key(clé privée) - SSLCertificateChainFile →
ca_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.
É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
SSLCertificateKeyFileest incorrect ou la clé est corrompue. - Avertissement de chaîne dans le navigateur :
SSLCertificateChainFilen'est pas défini ; ajoutezca_bundle.crt. - .htaccess ignoré :
AllowOverride Alldoit être défini dans le blocDirectorycorrespondant.
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.