Comment vérifier si TLS 1.2 est pris en charge sur un serveur Web distant à partir du shell RHEL / CentOS?

102

Je suis sur CentOS 5.9.

Je voudrais déterminer à partir du shell Linux si un serveur Web distant prend spécifiquement en charge TLS 1.2 (par opposition à TLS 1.0). Y at-il un moyen facile de vérifier pour cela?

Je ne vois pas une option liée sur opensslmais peut-être je néglige quelque chose.

Mike B
la source

Réponses:

161

Vous devez utiliser openssl s_client, et l'option que vous recherchez est -tls1_2.

Un exemple de commande serait:

openssl s_client -connect google.com:443 -tls1_2

Si vous obtenez la chaîne de certificats et la poignée de main, vous savez que le système en question prend en charge TLS 1.2. Si vous voyez ne pas voir la chaîne de certificats, et quelque chose de similaire à "erreur de négociation", vous savez que cela ne prend pas en charge TLS 1.2. Vous pouvez également tester TLS 1 ou TLS 1.1 avec -tls1 ou tls1_1 respectivement.

Jacob
la source
8
Et gardez à l'esprit que vous devrez utiliser une version d'OpenSSL prenant en charge TLS 1.2, ce qui signifie que CentOS 5 est bien sorti.
Michael Hampton
14
Ne fonctionne pas sur Mac OS X 10.11
Quanlong
Michael Hampton, uniquement les configurations OOB: [me @ server] [~] cat / etc / redhat-release CentOS version 5.11 (Final) [me @ server] [~] version opensl OpenSSL 1.0.2d 9 juil 2015;)
Kevin_Kinsey
12
@Quanlong homebrew a openssl v1.0.2. Installez-le puis exécutez-le avec/usr/local/Cellar/openssl/1.0.2d_1/bin/openssl s_client -connect google.com:443 -tls1_2
Xiao
6
Cela fonctionne très bien aprèsbrew upgrade openssl
Quanlong,
87

Aussi, vous pouvez lister tous les chiffrements supportés en utilisant:

nmap --script ssl-enum-ciphers -p 443 www.example.com

Et puis vérifiez la sortie. Si cela est supporté, vous obtiendrez quelque chose comme ceci:

|   TLSv1.2: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - strong
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - strong
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA - strong
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_RSA_WITH_AES_128_GCM_SHA256 - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA256 - strong
|       TLS_RSA_WITH_AES_256_GCM_SHA384 - strong
|       TLS_RSA_WITH_RC4_128_MD5 - strong
|       TLS_RSA_WITH_RC4_128_SHA - strong
|     compressors: 
|       NULL
Glueon
la source
4
Vous avez vraiment du mal à faire fonctionner ce script tiers. Écrit le mien pour les personnes intéressées: ici .
Xavier Lucas
2
Cela a très bien fonctionné pour moi.
colefner