在新的OS X安装上安装Homebrew时出现问题(SSL错误)

时间:2015-04-29 12:48:33

标签: macos ssl github homebrew

在这里安装新的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]

2 个答案:

答案 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.orgSSL/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