【前车之鉴】终于解决了homebrew 命令报错 error:1400410B:SSL routines:CONNECT_CR_SRVR_HELL ,同时授之以渔

问题回溯

Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
fatal: unable to access 'https://github.com/Homebrew/homebrew-services/': error:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong version number
Error: Failure while executing; `git clone https://github.com/Homebrew/homebrew-services /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services --origin=origin --template= --config core.fsmonitor=false` exited with 128.

好久没用brew 命令差点翻车,今天也是重新整理了下解决思路,假如你也在执行如下命令出现该问题那就一起看看解决方案:

brew install xx
brew update xx
brew services list
brew tap xxx
...

解决方案

这个错误实际就是SSL握手的错误,而这个错误的导火索是你直接使用
HTTP拉取,如下

git clone http://xxx.git 
# homebrew 执行命令默认就是http方式

使用HTTP必然通过握手,有网络安全经验的童鞋就知道,握手哪怕是基于SSL/TLS 都是有安全隐患的,特别是在公共网络或者企业网络【我属于这个】 是会被代理服务器劫持的,这就导致认证过不去,导致连接【握手】失败。

因此解决方案有两个:

1. 替换HTTP方式使用SSH

这个最简单,最安全,为啥SSH没有问题呢?
因为SSH基于对称加密,你的秘钥信息是保存在GitHub/其他仓库的内部服务器,这样安全性除了你故意让别人知道你本机的私钥信息,基本没有风险,配置SSH私钥这个 网上一堆,这里给一个Github官方标准配置版:ssh层面的CRUD

需要记得将你创建的SSH公钥上传到GitHub:
在这里插入图片描述

事实上在GitHub在好几年前就曾给每一个coder 发过邮件让你使用SSH方式去拉取远程仓库

那么回归上面问题,他说我的错误具体原因是:
Failure while executing; git clone https://github.com/Homebrew/homebrew-services /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services
那么使用SSH 后 新的命令执行方式:

git clone git@github.com:Homebrew/homebrew-services.git /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services

2. 关闭SSL认证【临时使用,不推荐永久关闭】

这个操作是危险的,这就意味着可以和目标远程仓库直连,无法使用SSL认证,也就是没有信任,你会被常说的中间人伪装攻击的,一般来说仓库的SSL认证默认是打开了,如下:
在这里插入图片描述

因此关闭方式就是:

git config --global http.sslVerify false
这样也可以继续执行命令,但是最好不要经常开启

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值