La ligne que vous recherchez probablement pour détecter la présence d'un en-tête d'extension SSL/TLS Server Name Indication est la suivante :
openssl s_client -servername www.SERVERNAME.com -tlsextdebug -connect www.YOURSERVER.com:443 2>/dev/null | grep "server name"
donde www.SERVERNAME.com
est la valeur SNI que vous testez et www.YOURSERVER.com
est le nom de domaine ou l'adresse IP du serveur TLS que vous testez.
La ligne de commande utilise openssl
's s_client
(voir s_client(1) ) pour se connecter au serveur à l'adresse www.YOURSERVER.com
sur le port 443
. Les -tlsextdebug
active la sortie de débogage de l'extension TLS. L'option -servername
indique à l'option s_client
programme à passer www.SERVERNAME.com
comme la valeur du champ SNI dans le paquet ClientHello pendant la poignée de main TLS.
Enfin, 2>/dev/null
cache simplement la sortie stderr (qui peut être bruyante), et l'option | grep "server name"
Le pipeline filtre stdout pour afficher l'extension TLS appelée "nom du serveur" en s_client
La sortie de débogage de l'extension TLS.
Si vous voyez une ligne de sortie telle que
TLS server extension "server name" (id=0), len=0
le serveur renvoie des informations d'en-tête SNI dans sa réponse ServerHello. Dans le cas contraire, il est possible que le serveur ne prenne pas en charge les informations SNI ou qu'il n'ait pas été configuré pour renvoyer des informations SNI sous le nom que vous demandez. Dans ce cas, vérifiez que vous utilisez bien un nom de domaine dans l'en-tête -servername
option pour laquelle le serveur doit répondre avec des informations SNI.