尝试连接 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
Run Code Online (Sandbox Code Playgroud)
这是在运行 rasbian bullseye 的树莓派上。
在同一网络上运行 Ubuntu 22.04 的另一个客户端上,一切正常。
我确实相信 openssl 版本足够好:
python -c 'import ssl; print(ssl.OPENSSL_VERSION)'
OpenSSL 1.1.1n 15 Mar 2022
Run Code Online (Sandbox Code Playgroud)
有什么想法如何解决这个问题吗?
curl -vLk https://api.github.com/rate_limit
...
* Connected to api.github.com (140.82.121.6) port 443 (#0)
Run Code Online (Sandbox Code Playgroud)
IP 地址正确。
...
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
Run Code Online (Sandbox Code Playgroud)
这意味着使用了支持 TLS 1.3 的最新 TLS 堆栈。该输出是curl 的OpenSSL 后端的典型输出。到目前为止看起来不错。
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,此错误消息具有误导性。我怀疑您的网络中存在某些东西会拦截流量并回复非 TLS 答案,然后该答案会被解释为 TLS,从而在(非 TLS)回复中发现意外的 TLS 版本。
造成这种情况的典型原因是错误的代理配置、强制门户或网络中的类似内容或防火墙阻止连接。不幸的是,我们对运行树莓派的环境一无所知,因此很难给出更准确的原因。无论如何,问题很可能出在您的机器之外。
编辑:提供的数据包捕获反映了我的预期:
可以看出,对 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>
Run Code Online (Sandbox Code Playgroud)
这是基于刷新的重定向到(可能)路径为 的路由器/shn_blocking.html。在互联网上搜索此路径表明这是某些 TP-Link 路由器的功能,可以阻止网站进行家长控制 - 请参阅此处了解特定路由器 TP-Link Deco 的此功能。可能您需要在路由器中专门排除您的树莓派,以便它获得未经过滤的互联网访问。
| 归档时间: |
|
| 查看次数: |
45922 次 |
| 最近记录: |