Skip to content

Apache2

Dépannage Configuration SSL

Lorsqu'Apache refuse de démarrer avec des erreurs SSL, suivez cette procédure de diagnostic.

1. Analyse des logs

L'erreur classique bloquante est souvent visible via : * systemctl status apache2 * journalctl -xeu apache2.service

Exemple d'erreur critique :

AH00526: Syntax error on line 9 of /etc/apache2/sites-enabled/monsite-ssl.conf:
SSLCertificateFile: file '/etc/apache2/ssl/monsite.crt' does not exist or is empty

Autres commandes utiles : * Tester la configuration : sudo apache2ctl configtest * Lister les hôtes virtuels : sudo apache2ctl -t -D DUMP_VHOSTS * Vérifier les modules activés : apache2ctl -M | grep ssl

2. Problèmes fréquents

Fichier de certificat vide ou manquant

Si vous voyez l'erreur does not exist or is empty, vérifiez la taille du fichier :

ls -l /etc/apache2/ssl/
Un fichier de 0 octet empêchera Apache de démarrer. Si vous utilisez une chaîne complète (fullchain), assurez-vous qu'elle a été correctement générée (concaténation non vide).

DocumentRoot inexistant

Une erreur AH00112: Warning: DocumentRoot [/nonexistantdir] does not exist indique que le dossier cible du site n'existe pas. Pour retrouver rapidement quel fichier de configuration contient ce mauvais chemin :

grep -r "nonexistantdir" /etc/apache2/
Ensuite, créez le dossier ou corrigez le chemin :
sudo mkdir -p /var/www/html

Permissions incorrectes

Apache doit pouvoir lire les certificats.

sudo chown root:root /etc/apache2/ssl/*
sudo chmod 644 /etc/apache2/ssl/*.crt
sudo chmod 600 /etc/apache2/ssl/*.key

3. Vérification de la correspondance Clé / Certificat

Si Apache démarre mais que le SSL ne fonctionne pas, vérifiez que la clé correspond au certificat.

Utilisez openssl pour comparer les modulus (doivent être identiques) :

openssl x509 -noout -modulus -in /etc/apache2/ssl/mon-certificat.crt | openssl md5
openssl rsa -noout -modulus -in /etc/apache2/ssl/ma-cle.key | openssl md5

4. Configuration SSL Type

Un VirtualHost SSL standard ressemble à ceci :

<VirtualHost *:443>
    ServerName exemple.fr
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile      /etc/apache2/ssl/exemple.fr.crt
    # Si vous avez une chaîne de certification (CA bundle) :
    # SSLCertificateChainFile /etc/apache2/ssl/ca-bundle.pem
    SSLCertificateKeyFile   /etc/apache2/ssl/exemple.fr.key
</VirtualHost>
Note : Si vous utilisez un fichier "fullchain", mettez-le dans SSLCertificateFile.

Voir aussi

  • OpenSSL : Documentation détaillée sur la gestion des certificats et clés SSL.