在这里安装新的OS X(新VM),并且在尝试安装Homebrew时,我发现了SSL错误。
fatal: unable to access 'https://github.com/Homebrew/homebrew/': Unknown SSL protocol error in connection to github.com:-9847
Failed during: git fetch origin master:refs/remotes/origin/master -n --depth=1
这是我使用的命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
稍微检查并尝试添加--insecure(或-k)并从https中删除s,但它似乎没有帮助。使用--insecure我只是让服务器中止了SSL握手。
有人知道这里有什么问题吗? " xcode-select --install"已经运行了。
编辑:按照下面的建议,我将带有tcpdump的打包转储到pcap文件,然后用tshark打开它。从我那里得到:
1 0.000000 MY_IP_REMOVED - > 192.30.252.130 TCP 78 49451→443 [SYN] Seq = 0 Win = 65535 Len = 0 MSS = 1460 WS = 32 TSval = 170479114 TSecr = 0 SACK_PERM = 1
2 0.128228 192.30.252.130 - > MY_IP_REMOVED TCP 78 443→49451 [SYN,ACK] Seq = 0 Ack = 1 Win = 14240 Len = 0 MSS = 1436 SACK_PERM = 1 TSval = 2830778812 TSecr = 170479114 WS = 1024 [以太网帧检查 SEQUENCE INCORRECT]
3 0.128303 MY_IP_REMOVED - > 192.30.252.130 TCP 66 49451→443 [ACK] Seq = 1 Ack = 1 Win = 132416 Len = 0 TSval = 170479237 TSecr = 2830778812
4 0.150128 MY_IP_REMOVED - > 192.30.252.130 SSL 255客户端Hello
5 0.150913 192.30.252.130 - > MY_IP_REMOVED SSL 1158延续数据[以太网框架检查顺序不正确]
6 0.150916 192.30.252.130 - > 81.26.52.196 TCP 64 443→49451 [FIN,ACK] Seq = 1101 Ack = 190 Win = 4237312 Len = 0 [以太网帧检查序列 不正当]7 0.150961 MY_IP_REMOVED - > 192.30.252.130 TCP 66 49451→443 [ACK] Seq = 190 Ack = 1101 Win = 131328 Len = 0 TSval = 170479257 TSecr = 2830778812
8 0.150990 MY_IP_REMOVED - > 192.30.252.130 TCP 66 49451→443 [ACK] Seq = 190 Ack = 1102 Win = 131328 Len = 0 TSval = 170479257 TSecr = 2830778812
9 0.151046 MY_IP_REMOVED - > 192.30.252.130 TCP 66 49451→443 [FIN,ACK] Seq = 190 Ack = 1102 Win = 132416 Len = 0 TSval = 170479257 TSecr = 2830778812
10 0.151156 192.30.252.130 - > MY_IP_REMOVED TCP 64 443→49451 [RST] Seq = 1102 Win = 4237312 Len = 0 [以太网框架检查 SEQUENCE INCORRECT]
答案 0 :(得分:4)
如果这是OS X的全新安装,我怀疑问题可能是SecureTransport
中的一个罕见问题(错误?),可能是由路由到github的某个地方的代理或防火墙设置触发的。
您的libcurl
是针对Security.framework
编译的。错误代码-9847
表示Record overflow:
A record overflow occurred.
Value
–9847
Description
A record overflow occurred.
Available in OS X v10.3 and later.
错误可能会在tls1Callouts.c中精确定位到此行。似乎客户端收到了意外长度的记录。
它可能与类似issue in gnutls:有关。
TLS连接和F5防火墙存在一些问题 看起来就像这样。如果防火墙终止了TLS会话 客户端问候语介于256和512字节之间。如果是这样的话 可以使用wireshark进行验证。
我们在更高版本中采用的解决方案 gnutls是添加填充: https://gitlab.com/gnutls/gnutls/commit/b6d29bb1737f96ac44a8ef9cc9fe7f9837e20465
您可以尝试使用tcpdump / wireshark进一步调查(将en0替换为您的接口名称):
$ sudo tcpdump -i en0 —n -s 0 -B 524288 -w test.pcap port 443
在Wireshark中查看您的pcap
文件(或直接在Wireshark中捕获)以获取有关每个阶段的详细信息。关于www.sans.org的SSL/TLS
有一个很好的解释。为了比较,我(成功)的谈话是这样的:
$ tshark -r test.pcap
1 0.000000 10.0.0.125 -> 192.30.252.129 TCP 78 51229→443 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=32 TSval=235773429 TSecr=0 SACK_PERM=1
2 0.133049 192.30.252.129 -> 10.0.0.125 TCP 74 443→51229 [SYN, ACK] Seq=0 Ack=1 Win=14240 Len=0 MSS=1460 SACK_PERM=1 TSval=1851779047 TSecr=235773429 WS=1024
3 0.133148 10.0.0.125 -> 192.30.252.129 TCP 66 51229→443 [ACK] Seq=1 Ack=1 Win=131744 Len=0 TSval=235773562 TSecr=1851779047
4 0.138296 10.0.0.125 -> 192.30.252.129 SSL 255 Client Hello
5 0.278168 192.30.252.129 -> 10.0.0.125 TLSv1.2 1490 Server Hello
6 0.278567 192.30.252.129 -> 10.0.0.125 TLSv1.2 1490 Certificate
7 0.278696 10.0.0.125 -> 192.30.252.129 TCP 66 51229→443 [ACK] Seq=190 Ack=2849 Win=129632 Len=0 TSval=235773707 TSecr=1851779083
8 0.278910 192.30.252.129 -> 10.0.0.125 TLSv1.2 399 Server Key Exchange
9 0.278991 10.0.0.125 -> 192.30.252.129 TCP 66 51229→443 [ACK] Seq=190 Ack=3182 Win=130720 Len=0 TSval=235773707 TSecr=1851779083
10 0.339768 10.0.0.125 -> 192.30.252.129 TLSv1.2 141 Client Key Exchange
11 0.551009 192.30.252.129 -> 10.0.0.125 TCP 66 443→51229 [ACK] Seq=3182 Ack=265 Win=15360 Len=0 TSval=1851779144 TSecr=235773767
12 0.551185 10.0.0.125 -> 192.30.252.129 TLSv1.2 157 Change Cipher Spec, Encrypted Handshake Message
13 0.688512 192.30.252.129 -> 10.0.0.125 TCP 66 443→51229 [ACK] Seq=3182 Ack=356 Win=15360 Len=0 TSval=1851779186 TSecr=235773977
14 0.691643 192.30.252.129 -> 10.0.0.125 TLSv1.2 157 Change Cipher Spec, Encrypted Handshake Message
15 0.691720 10.0.0.125 -> 192.30.252.129 TCP 66 51229→443 [ACK] Seq=356 Ack=3273 Win=130976 Len=0 TSval=235774117 TSecr=1851779186
16 0.692351 10.0.0.125 -> 192.30.252.129 TLSv1.2 215 Application Data
如果确实如此,您的解决方法可能是编译具有libcurl
支持的自定义openssl
,并让git使用您的新libcurl
。或者,您可以使用ssh
而不是https
来连接到github(如果您在github上注册了公钥)。
答案 1 :(得分:0)
如果您只想要一个解决方法来安装Homebrew,您可以尝试使用其他工具下载其安装脚本。例如。像这样:
$ python -c "import urllib ; urllib.urlretrieve('https://raw.githubusercontent.com/Homebrew/install/master/install', 'install.rb')"
$ ruby install.rb