Résolution des problèmes liés au protocole SSL (certificat de serveur)
S’applique à : Internet Information Services
Vue d’ensemble
Cet article vous aide à résoudre les problèmes SSL (Secure Sockets Layer) liés à Internet Information Services (IIS) uniquement. Il couvre les certificats serveur utilisés pour l’authentification du serveur, et non les certificats clients.
Si la section Certificats clients est définie sur Exiger et que vous rencontrez des problèmes, cet article n’est pas celui que vous devez consulter. Cet article est destiné à résoudre le problème des certificats de serveur SSL uniquement.
Il est important de savoir que chaque certificat comprend une clé publique (utilisée pour le chiffrement) et une clé privée (utilisée pour le déchiffrement). La clé privée est connue uniquement du serveur.
Le port par défaut pour HTTPS est 443. Il est supposé que vous êtes bien familiarisé avec l’établissement d’une liaison SSL et le processus d’authentification du serveur pendant l’établissement d’une liaison SSL.
Outils utilisés dans cet utilitaire de résolution des problèmes
Les outils utilisés pour résoudre les différents scénarios sont les suivants :
- Moniteur réseau 3.4
- Wireshark
Scénarios
Le message d’erreur suivant s’affiche lors de la navigation sur un site web via HTTPS :
La première condition préalable à vérifier est de savoir si le site web est accessible via HTTP. Si ce n’est pas le cas, il existe probablement un problème distinct qui n’est pas abordé dans cet article. Avant d’utiliser cet utilitaire de résolution des problèmes, vous devez disposer du site web opérationnel sur HTTP.
Supposons maintenant que le site web est accessible via HTTP et que le message d’erreur précédent s’affiche lorsque vous essayez de parcourir HTTPS. Le message d’erreur s’affiche car l’établissement d’une liaison SSL a échoué. Il peut y avoir de nombreuses raisons qui sont détaillées dans les scénarios suivants.
Scénario 1
Vérifiez si le certificat de serveur a la clé privée correspondante. Consultez la capture d’écran suivante de la boîte de dialogue Certificat :
Résolution
Si une clé privée est manquante, vous devez obtenir un certificat qui contient la clé privée, qui est essentiellement un . Fichier PFX . Voici une commande que vous pouvez essayer d’exécuter pour associer la clé privée au certificat :
C:\>certutil - repairstore my "906c9825e56a13f1017ea40eca770df4c24cb735"
Si l’association réussit, la fenêtre suivante s’affiche :
Dans cet exemple, 906c9825e56a13f1017ea40eca770df4c24cb735
est l’empreinte numérique du certificat. Pour obtenir l’empreinte numérique, procédez comme suit :
- Ouvrez le certificat.
- Sélectionnez l’onglet Détails.
- Faites défiler vers le bas pour rechercher la section d’empreinte numérique.
- Sélectionnez la section empreinte numérique et sélectionnez le texte sous celui-ci.
- Effectuez une touche Ctrl+A, puis Ctrl+C pour la sélectionner et la copier.
Note
La certutil
commande peut ne pas toujours réussir. Si cela échoue, vous devez obtenir un certificat contenant la clé privée de l’autorité de certification (CA).
Scénario 2
Dans ce scénario, considérez que vous disposez d’un certificat de serveur qui contient la clé privée installée sur le site web. Toutefois, vous continuez à voir l’erreur indiquée dans le scénario 1. Vous ne pouvez toujours pas accéder au site web via HTTPS.
Résolution
Si vous avez un certificat qui contient la clé privée, mais que vous ne pouvez pas accéder au site web, vous pouvez également voir l’avertissement SChannel suivant dans les journaux des événements système :
Event Type: Error
Event Source: Schannel
Event Category: None
Event ID: 36870
Date: 2/11/2012
Time: 12:44:55 AM
User: N/A
Computer:
Description: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x80090016.
Cet événement ou cette erreur indique qu’il y a eu un problème lors de l’acquisition de la clé privée du certificat. Pour résoudre l’avertissement, procédez comme suit :
Vérifiez les autorisations sur le dossier MachineKeys . Toutes les clés privées sont stockées dans le dossier MachineKeys . Vérifiez donc que vous disposez des autorisations nécessaires.
Si les autorisations sont en place et si le problème n’est toujours pas résolu, il peut y avoir un problème avec le certificat. Il a peut-être été endommagé. Vous pouvez voir un code d’erreur dans le journal des
0x8009001a
événements SChannel suivant :Event Type: Error Event Source: Schannel Event Category: None Event ID: 36870 Date: 2/11/2012 Time: 12:44:55 AM User: N/A Computer: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x8009001a.
Vérifiez si le site web fonctionne avec un certificat de test.
Effectuez une sauvegarde du certificat existant, puis remplacez-le par un certificat auto-signé.
Essayez d’accéder au site web à l’aide du protocole HTTPS.
S’il fonctionne, le certificat utilisé précédemment a été endommagé et doit être remplacé par un nouveau certificat de travail. Parfois, le problème peut ne pas être lié au certificat, mais à l’émetteur. Pendant la vérification de la chaîne de certificats, vous pouvez voir l’erreur
CERT_E_UNTRUSTEDROOT (0x800b0109)
si le certificat d’autorité de certification racine n’est pas approuvé.Pour corriger cette erreur, ajoutez le certificat de l’autorité de certification au magasin d’autorité de certification racine approuvée sous Mon compte d’ordinateur sur le serveur. Pendant la vérification de la chaîne de certificats, vous pouvez également obtenir l’erreur
-2146762480(0x800b0110)
.Pour résoudre l’erreur, procédez comme suit pour vérifier le type d’utilisation du certificat :
- Ouvrez le certificat.
- Sélectionnez l’onglet Détails.
- Sélectionnez Modifier les propriétés.
- Sous l’onglet Général, assurez-vous que l’option Activer tous les objectifs de cette option de certificat est sélectionnée et, plus important encore, l’authentification du serveur doit être présente dans la liste.
Scénario 3
Les deux premiers scénarios permettent de vérifier l’intégrité du certificat. Une fois que vous avez confirmé qu’il n’y a aucun problème avec le certificat, un problème important est résolu. Mais que se passe-t-il si le site web n’est toujours pas accessible via HTTPS ? Vérifiez les liaisons HTTPS du site web et déterminez le port et l’adresse IP sur lesquels il écoute.
Résolution
Exécutez la commande suivante pour vous assurer qu’aucun autre processus n’écoute sur le port SSL utilisé par le site web.
netstat -ano" or "netstat -anob"
S’il existe un autre processus à l’écoute sur ce port, vérifiez pourquoi ce processus utilise ce port.
Essayez de modifier la combinaison IP-Port pour vérifier si le site web est accessible.
Scénario 4
À présent, vous pouvez vous assurer que vous disposez d’un certificat de travail approprié installé sur le site web et qu’il n’existe aucun autre processus à l’aide du port SSL pour ce site web. Toutefois, vous pouvez toujours voir l’erreur « Impossible d’afficher la page » lors de l’accès au site web via HTTPS. Lorsqu’un client se connecte et lance une négociation SSL, HTTP.sys recherche dans sa configuration SSL la paire « IP :Port » à laquelle le client est connecté. La configuration SSL HTTP.sys doit inclure un hachage de certificat et le nom du magasin de certificats avant que la négociation SSL réussisse. Le problème peut être avec le HTTP.SYS SSL Listener
.
Le hachage de certificat inscrit avec HTTP.sys peut être NULL ou il peut contenir un GUID non valide.
Résolution
Exécutez la commande suivante :
netsh http show ssl
Voici des exemples de scénarios de travail et de non-travail :
Scénario de travail
Configuration Setting IP :port 0.0.0.0:443 Hachage de certificat c09b416d6b 8d615db22 64079d15638e96823d ID d’application {4dc3e181-e14b-4a21-b022-59fc669b0914} Nom du magasin de certificats My Vérifier la révocation des certificats clients Activé(e) Délai d’actualisation de la révocation 0 Délai d’expiration de la récupération d’URL 0 ...... ...... Scénario non opérationnel
Configuration Setting IP :port 0.0.0.0:443 Hachage de certificat ID d’application {00000000-0000-0000-0000-000000000000} CertStoreName My Vérifier la révocation des certificats clients 0 Délai d’actualisation de la révocation 0 Délai d’expiration de la récupération d’URL 0 ...... ...... La valeur de hachage affichée dans le scénario De travail est l’empreinte numérique de votre certificat SSL. Notez que le GUID est tout zéro dans un scénario non opérationnel. Vous pouvez voir que le hachage a une valeur ou est vide. Même si vous supprimez le certificat du site web, puis exécutez
netsh http show ssl
, le site web répertorie toujours le GUID comme tous les 0. Si vous voyez le GUID comme « {0000...............000} », il existe un problème.Supprimez cette entrée en exécutant la commande suivante :
netsh http delete sslcert ipport=<IP Address>:<Port>
Par exemple :
netsh http delete sslcert ipport=0.0.0.0:443
Pour déterminer si des adresses IP sont répertoriées, ouvrez une invite de commandes, puis exécutez la commande suivante :
netsh http show iplisten
Si la commande retourne une liste d’adresses IP, supprimez chaque adresse IP de la liste à l’aide de la commande suivante :
netsh http delete iplisten ipaddress=<IP Address>
Note
Redémarrez IIS après cela à l’aide de la
net stop http /y
commande.
Scénario 5
En dépit de tout cela, si vous ne parvenez toujours pas à parcourir le site web sur HTTPS, capturez une trace réseau à partir du client ou du serveur. Filtrez la trace par « SSL ou TLS » pour examiner le trafic SSL.
Voici un instantané de trace réseau d’un scénario non opérationnel :
Voici un instantané de trace réseau d’un scénario de travail :
Il s’agit de la méthode d’analyse d’une trace réseau. Vous devez développer les détails de l’image et voir quel protocole et chiffrement ont été choisis par le serveur. Sélectionnez « Server Hello » dans la description pour afficher ces détails.
Dans le scénario non opérationnel, le client a été configuré pour utiliser TLS 1.1 et TLS 1.2 uniquement. Toutefois, le serveur web IIS a été configuré pour prendre en charge jusqu’à ce que TLS 1.0 ait échoué.
Vérifiez les clés de Registre pour déterminer quels protocoles sont activés ou désactivés. Voici le chemin d’accès :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Le DWORD activé doit être défini sur 1. S’il est défini sur 0, le protocole est désactivé.
Par exemple, SSL 2.0 est désactivé par défaut.