Il existe plusieurs erreurs liées au protocole SSL dans Apache pouvant entraîner les problèmes suivants:
Les erreurs empêchant Apache de démarrer peuvent être très frustrantes. Cela se produit généralement lorsqu’Apache lit les fichiers de configuration et rencontre un élément qu’il ne sait pas traiter. La première étape lorsque vous rencontrez ce problème consiste à consulter votre fichier journal afin d’y rechercher une erreur pouvant indiquer l’origine du problème.
L’emplacement par défaut des fichiers journaux est le suivant:
| Debian (Ubuntu): | /var/log/apache2/error_log |
| Red Hat Enterprise Linux, CentOS: | /var/log/httpd/error_log |
| Windows: | C:\Program Files\Apache Group\Apache2\logs\error.log |
| Emplacement par défaut après compilation du code source: | /usr/local/apache2/logs/error_log |
Si les fichiers journaux ne se trouvent pas à l’un des emplacements ci-dessus, il est possible qu’un autre emplacement ait été défini dans votre fichier httpd.conf ou dans la section VirtualHost de votre fichier .conf.
Certaines erreurs possibles dans les fichiers .conf sont répertoriées ci-dessous.
Erreurs « Unable to configure RSA server private key » et « certificate routines:X509_check_private_key:key values mismatch »
Si vous voyez l’une de ces erreurs, cela signifie généralement que la clé privée chargée dans la section VirtualHost de votre fichier .conf ne correspond pas au certificat SSL chargé dans cette même section.
Pour vérifier que les deux fichiers correspondent, exécutez la commande OpenSSL suivante sur chacun d’eux:
openssl x509 -noout -modulus -in your_domain_com.crt | openssl md5
openssl rsa -noout -modulus -in your_domain_com.key | openssl md5
Si les valeurs modulus des deux fichiers ne correspondent pas exactement, procédez de l’une des manières suivantes:
openssl req -new -key your_domain_com.key -out your_domain_com.csr
Erreur « Invalid command 'SSLEngine' »
Cette erreur peut être causée par l’absence du module mod_ssl sur le serveur. Ce module est requis par Apache pour établir des connexions SSL.
Pour activer ce module sur CentOS/RedHat Linux, exécutez la commande suivante depuis la console:
sudo yum install mod_ssl
Pour activer ce module sur une distribution basée sur Debian, exécutez la commande suivante:
a2enmod ssl
Erreurs « SSL3_READ_BYTES:sslv3 alert handshake failure » et « SSL23_WRITE:ssl handshake failure »
Ces erreurs sont provoquées par une directive du fichier de configuration qui exige une authentification mutuelle. Par exemple, si un certificat SSL est envoyé par le serveur puis qu’un autre certificat SSL est renvoyé par le client lors de la négociation SSL, cette erreur se produira.
D’après notre expérience, cette directive est généralement ajoutée par erreur. Pour la supprimer et corriger l’erreur, ouvrez votre fichier .conf. Remplacez SSLVerifyClient ou SSLVerifyClient optional_no_ca par SSLVerifyClient none, puis redémarrez Apache. Cette modification indique à Apache de ne plus rechercher de certificat client lors de l’établissement de la connexion SSL.
Une autre cause possible de ces erreurs est la présence de la ligne SSLVerifyDepth 1 dans le fichier .conf. Commentez cette ligne en ajoutant un # au début (par exemple: #SSLVerifyDepth 1).
Erreur « SSLSessionCache: Invalid argument: size has to be >=8192 bytes »
Cette erreur survient lorsque le nom du dossier dans lequel Apache pour Windows est installé contient des espaces ou des parenthèses.
Pour corriger ce problème, déplacez tous les fichiers Apache vers un autre dossier (par exemple de c:/Program Files (x86)/Apache2/ vers c:/Apache/Apache2/).
Vous pouvez également remplacer le nom du dossier par son nom court. Exécutez la commande suivante pour trouver ce nom:
dir /x C:\
Vous devrez également ajouter une barre oblique inverse (\) pour éviter le caractère ~ comme suit:
C:/Program Files (x86)/Apache2/ deviendra C:/Progra\~2/Apache2/
Enfin, redémarrez Apache.

Deux causes peuvent provoquer cette erreur dans le SSL Certificate Tester:
Dans la section VirtualHost de votre fichier .conf (généralement httpd-ssl.conf, ssl.conf ou virtual-host.conf), la directive SSLCertificateChainFile est soit commentée (par exemple #SSLCertificateChainFile), soit configurée avec un mauvais fichier de certificat intermédiaire SSL. Pour corriger cela, décommentez simplement la ligne et assurez-vous que SSLCertificateChainFile pointe vers DigiCertCA.crt.
La section VirtualHost de votre fichier .conf est correctement configurée, mais un autre hôte virtuel est déjà configuré dans un autre fichier .conf pour l’adresse IP et le port où vous essayez d’installer le certificat SSL. Le problème est généralement que cet autre fichier .conf pointe vers un mauvais certificat intermédiaire SSL.
Pour trouver ce fichier, exécutez une commande grep (remplacez /etc/apache2/ par votre répertoire Apache). Cette commande recherchera dans tous les sous-répertoires un fichier .conf contenant SSLCertificateChainFile.
grep -i -r "SSLCertificateChainFile" /etc/apache2/
Sous Windows, utilisez la commande suivante:
findstr /s /i "SSLCertificateChainFile" *.conf
Une fois le fichier trouvé, décommentez la ligne si elle est commentée (supprimez le #) et assurez-vous que SSLCertificateChainFile pointe vers DigiCertCA.crt. Redémarrez ensuite Apache.
Cette erreur apparaît le plus souvent dans Firefox, mais des erreurs similaires peuvent également apparaître dans d’autres navigateurs. Elle se produit fréquemment lorsque le trafic SSL n’est pas correctement configuré sur le serveur que vous essayez de sécuriser. Par exemple, le DNS associé au nom DNS de votre VirtualHost est incorrect.
Voici quelques solutions possibles:
Le fichier /conf/extra/httpd-ssl.conf contient les bonnes informations SSL mais n’est pas chargé parce que httpd.conf ne l’inclut pas.
Pour corriger cette erreur, décommentez la ligne suivante (supprimez le #), puis redémarrez Apache.
#Include conf/extra/httpd-ssl.conf
Apache n’est pas configuré pour écouter sur le port 443 pour le trafic sécurisé. Pour corriger cela, ajoutez la ligne suivante avant le chargement du bloc <VirtualHost>:
Listen 443
Si vous utilisez IPv6, vous devrez également préciser l’adresse IP:
Listen 192.168.0.1:443
Si vous utilisez HTTPS sur un port non standard, vous devez indiquer à Apache d’écouter les connexions SSL sur ce port:
Listen 192.168.0.1:8443 https
Si vous voyez les lignes ci-dessus dans un bloc <If DefineSSL>, assurez-vous que SSL est défini lors du démarrage d’Apache. Normalement, SSL est défini automatiquement, mais si ce n’est pas le cas, essayez les commandes suivantes pour les anciennes versions d’Apache 2:
path/to/httpd -D SSL -k start
path/to/apachectl startssl
path/to/httpd startssl
Si vous utilisez Apache sous Windows, assurez-vous que le fichier hosts du serveur Windows est correctement configuré. Il doit se trouver dans C:\Windows\System32\Drivers\etc\hosts. Certaines personnes résolvent cette erreur en remplaçant VirtualHost your.domain.com:443 par VirtualHost _default_:443.
Assurez-vous que le bloc <VirtualHost> configure Apache pour utiliser SSL via la directive SSLEngine comme suit:
<VirtualHost your.domain.com:443>
SSLEngine On
[reste du VirtualHost]
</VirtualHost>
Cette erreur peut également être causée par un proxy mal configuré qui ne permet pas d’effectuer correctement une négociation SSL sur le port 443. Pour le vérifier, essayez d’accéder au site depuis l’extérieur de votre réseau à l’aide de plusieurs navigateurs web différents. Si l’erreur n’apparaît plus, le proxy est probablement mal configuré.