SSL 错误:版本号错误

SSL 错误:版本号错误

尝试连接 github 时出现以下错误:

curl -vLk https://api.github.com/rate_limit
*   Trying 140.82.121.6:443...
* Connected to api.github.com (140.82.121.6) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
* Closing connection 0
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number

这是在运行 rasbian bullseye 的树莓派上。

在同一网络上的另一个运行 Ubuntu 22.04 的客户端上,一切运行正常。

我确实相信 openssl 版本足够好:

python -c 'import ssl; print(ssl.OPENSSL_VERSION)'
OpenSSL 1.1.1n  15 Mar 2022

有什么想法可以解决此问题吗?

答案1

curl -vLk https://api.github.com/rate_limit
...
* Connected to api.github.com (140.82.121.6) port 443 (#0)

IP地址正确。

...
* TLSv1.3 (OUT), TLS handshake, Client hello (1):

这意味着使用了支持 TLS 1.3 的最新 TLS 堆栈。输出对于 curl 的 OpenSSL 后端来说是典型的。到目前为止看起来不错。

* error:1408F10B:SSL routines:ssl3_get_record:wrong version number

此错误消息在大多数情况下具有误导性。我怀疑您的网络中存在某种东西,它会拦截流量并以非 TLS 答案进行回复,然后将其解释为 TLS,因此在(非 TLS)回复中会发现意外的 TLS 版本。

造成这种情况的典型原因是错误的代理配置、网络中的强制门户或类似情况或防火墙阻止连接。不幸的是,我们对运行此 rasperry pi 的环境一无所知,因此很难给出更准确的原因。无论如何,问题很可能出在您的机器之外。

编辑:提供的数据包捕获反映了我的预期:

wireshark抓包显示

可以看出,对 TLS Client Hello 的回复是以下普通的 HTTP 响应:

HTTP/1.1 200 OK
Server: Jetty/4.2.x (Windows XP/5.1 x86 java/1.6.0_17)
Content-Type: text/html
Content-Length: 186
Accept-Ranges: bytes

<html>
<head>
<meta HTTP-EQUIV="REFRESH" content="0; url=http://192.168.68.1:80/shn_blocking.html?cat_id=56&mac=B827EBDA723E&domain=api.github.com">
</head>
<body></body>
</html>

这是基于刷新的重定向(可能)到路由器,路径为/shn_blocking.html。在互联网上搜索此路径表明这是某些 TP-Link 路由器的一项功能,可以阻止网站进行家长控制 - 请参阅了解您的特定路由器 TP-Link Deco 的此功能。您可能需要在路由器中专门排除您的 rasperry pi,以便它获得未过滤的互联网访问。

相关内容