如何从 RHEL/CentOS shell 验证远程 Web 服务器是否支持 TLS 1.2?

Mik*_*e B 128 linux centos openssl tls

我在 CentOS 5.9 上。

我想从 linux shell 确定远程 Web 服务器是否专门支持 TLS 1.2(而不是 TLS 1.0)。有没有简单的方法来检查?

我没有看到相关选项,openssl但也许我忽略了一些东西。

Jac*_*cob 197

您应该使用 openssl s_client,您正在寻找的选项是 -tls1_2。

一个示例命令是:

openssl s_client -connect google.com:443 -tls1_2

如果您获得证书链和握手,您就知道相关系统支持 TLS 1.2。如果您看不到证书链,以及类似于“握手错误”的内容,您就知道它不支持 TLS 1.2。您还可以分别使用 -tls1 或 tls1_1 测试 TLS 1 或 TLS 1.1。

  • 不适用于 Mac OS X 10.11 (14认同)
  • @Quanlong homebrew 有 openssl v1.0.2。安装它然后使用`/usr/local/Cellar/openssl/1.0.2d_1/bin/openssl s_client -connect google.com:443 -tls1_2`运行它 (12认同)
  • 请记住,您必须使用支持 TLS 1.2 的 OpenSSL 版本,这意味着 CentOS 5 是正确的。 (8认同)
  • `brew upgrade openssl` 后它工作正常 (6认同)

Glu*_*eon 106

您还可以使用以下方法列出所有支持的密码:

nmap --script ssl-enum-ciphers -p 443 www.example.com
Run Code Online (Sandbox Code Playgroud)

然后检查输出。如果它被支持,你会得到这样的东西:

|   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
Run Code Online (Sandbox Code Playgroud)

  • 试图让这个第三方脚本工作真的很难。为感兴趣的人写我的:[这里](https://github.com/xlucas/ssl-inspector)。 (4认同)
  • 它对我很有用。 (4认同)
  • 截至目前,nmap 不支持 TLS1.3,因此如果您想检查 Web 服务器端的 TLS1.3 可用性,此命令将无济于事。否则对于版本 1.2 ,此解决方案工作正常。 (2认同)