Sum*_*mak 3 ruby ssl curl openssl wget
当我尝试访问这个网站时,我得到了不同的结果,具体取决于我使用的工具:CURL 和 Ruby 的 Net::HTTP 模块都返回一个SSLError wrong signature type. 虽然我没有详尽地测试访问它的所有方法,但我想知道是什么导致了这种差异。我的猜测是对 TLS 的不同支持,好像某些工具在面对旧的 TLS 版本时更能容忍。
一些附加信息:
Linux debian 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/LinuxOpenSSL 1.1.1d 10 Sep 2019TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 256bit keys, TLS 1. OpenSSL 1.0.1e-48.el6_8.1 RHEL 6: 95.93%
OpenSSL 1.0.1e-42.el6_7.4 RHEL 6.7.z: 95.93%
OpenSSL 1.0.1e-30.el6_6.12 RHEL 6.6.AUS: 95.93%
OpenSSL 1.0.1h default source build: 95.83%
OpenSSL 1.0.1e-16.el6_5.16 RHEL 6.5.AUS: 92.88%
OpenSSL 1.0.1 default source build: 92.54%
OpenSSL 1.0.1k Debian 8 Apache: 91.67%
OpenSSL 1.0.1g default source build: 91.67%
OpenSSL 1.0.2 default source build: 90.51%
OpenSSL 1.0.1a default source build: 87.50%
Run Code Online (Sandbox Code Playgroud)
谁能给我一个高级解释为什么有些工具得到 200OK,而其他工具返回 SSLError '错误的签名类型'?
小智 8
您常用的 Web 浏览器和 CURL(以及其他一些浏览器)之间的区别在于 SNI(服务器名称指示)的使用。总而言之,SNI 是客户端将在请求中发送的信息,以告诉服务器他正在访问哪个域,它允许您在同一 IP 地址上配置多个网站,但也可以配置不同的证书。
从您网站上的SSLLab 测试来看,您的域的证书(使用 SNI 时提供)是好的,但默认证书(未提供 SNI 时)无效。这就是为什么您只在特定软件上出现错误的原因。
因此,您需要修复默认证书,为默认网站使用有效的证书(如果此服务器托管多个网站)或相同(如果此服务器上只有此网站)。