为什么我可以使用 Firefox 或 WGET 访问网站,但不能使用 CURL 或 Ruby
Why can I access a website using Firefox or WGET, but I can't using CURL or Ruby
当我尝试访问 this website 时,根据我使用的工具,我得到了不同的结果:CURL 和 Ruby 的 Net::HTTP 模块都 returns a 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/Linux
- 本地机器 OpenSSL 版本:
OpenSSL 1.1.1d 10 Sep 2019
- 服务器加密:
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 256bit keys, TLS 1.
- 服务器最有可能的 SSL/TLS 实现(使用 tls_prober)
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%
谁能给我一个高层次的解释,为什么有些工具得到 200OK,而另一些工具 returns SSLError 'wrong signature type'?
您常用的网络浏览器和 CURL(以及其他一些浏览器)之间的区别在于 SNI 的使用 (Server Name Indication)。总而言之,SNI 是客户端将在请求中发送的信息,用于告诉服务器他正在访问哪个域,它允许您在同一 IP 地址上配置多个网站,但也可以配置不同的证书。
从您网站上的 SSLLab test 来看,您域的证书(使用 SNI 时提供)是好的,但默认证书(未提供 SNI 时)无效。这就是为什么您仅在特定软件上出现错误。
因此您需要修复默认证书,为默认网站使用有效的证书(如果此服务器托管多个网站),或使用相同的证书(如果您在此服务器上只有此网站)。
当我尝试访问 this website 时,根据我使用的工具,我得到了不同的结果:CURL 和 Ruby 的 Net::HTTP 模块都 returns a 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/Linux
- 本地机器 OpenSSL 版本:
OpenSSL 1.1.1d 10 Sep 2019
- 服务器加密:
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 256bit keys, TLS 1.
- 服务器最有可能的 SSL/TLS 实现(使用 tls_prober)
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%
谁能给我一个高层次的解释,为什么有些工具得到 200OK,而另一些工具 returns SSLError 'wrong signature type'?
您常用的网络浏览器和 CURL(以及其他一些浏览器)之间的区别在于 SNI 的使用 (Server Name Indication)。总而言之,SNI 是客户端将在请求中发送的信息,用于告诉服务器他正在访问哪个域,它允许您在同一 IP 地址上配置多个网站,但也可以配置不同的证书。
从您网站上的 SSLLab test 来看,您域的证书(使用 SNI 时提供)是好的,但默认证书(未提供 SNI 时)无效。这就是为什么您仅在特定软件上出现错误。
因此您需要修复默认证书,为默认网站使用有效的证书(如果此服务器托管多个网站),或使用相同的证书(如果您在此服务器上只有此网站)。