github不支持tls1.1导致egit cannot open git-upload-pack 作于2018-02-27

01.png

【前言】

本文可以当小说看,悬疑小说。


【起因】

过年后开始上班,大概是2.22开始上班,到昨天2.25发现问题,

myeclipse的egit不能clone和pull github上的项目了。

报错信息cannot open git-upload-pack,

2.25的时候公司网络打开github有点慢,

以为是公司网络问题,就没关注,

今天2.26试了一下,还是不行,就头大了。


【http.sslVerify false?太天真】

这个问题以前也遇到过,百度一下,结果一大堆,

都是告你在myeclipse-window-preferences-team-git-configuration中

add entry,设置key为http.sslVerify,值为false,apply,ok,

如果你认为这样就对了,那就很傻很天真。

03.png


【凭经验各种尝试】

首先想到的还是上面说的sslVerify的问题,

仔细校对了一下,没有拼写错误,

然后有想到是不是repo settings的问题,

也就是项目的git config没有被系统覆盖,

修改repo settings,也添加了sslVerify false,

还是不行。

04.png


接着想到是不是egit的问题,

看了一下环境配置,

jdk1.6,myeclipse10.6,egit2.3.1,

好像是有点旧,

查到egit最新版本是4.10,

百度了下没有直接能安装的jar,dropins的方式,

所以只能通过myeclipse自带的难用的eclipse marketplace安装,

难用在访问很慢,不管有没有翻墙都是很慢,坑爹,

等待了好半天说是文件缺失,缺失你妹啊~

后来又百度到myeclipse10.6对应的eclipse支持的egit就是2.3.1,

行,白忙活了,抓狂。

05.png


【冷静的分析】

2.25发现不能用的时候,有尝试公司的gitlab项目,还有国内的gitosc项目,

这些项目都正常,就是github上的不正常,当时没注意。

上面尝试过一遍后发现,不对,要冷静,

就冷静的想了下,发现只是github项目不行,myeclipse和egit都正常,

这个时候就要去找github的问题了。


查看了报错信息,之前只是看到cannot open git-upload-pack就没往下了,

这次看了下详细信息,如下,发现具体错误是javax.net.ssl.SSLException: Received fatal alert: protocol_version,

虽然英语不是很好,但大概能理解到是ssl协议的版本不对。

找到问题了,开始解决问题。

02.png


【嫌疑人tls1.2】

然后开始google各种查,

egit protocol version

myeclipse protocol version

eclipse protocol version

等等,

没有找到直接的答案,但是发现在java编码中也会有protocol version这个问题,

答案是jdk1.6不支持tls1.2,不过可以通过编码引入其他库的方式弥补,

但是,myeclipse egit怎么通过编码的方式弥补,抓狂,


然后开始查jdk1.6 tls1.2,jdk1.7 tls1.2等

发现只有jdk1.8是支持tls1.2的,其他不支持


【换个jdk1.8?太天真】

由于本地是jdk1.7,myeclipse编译还是使用的1.6,

所以需要下载一个jdk1.8,然后开始下载,修改path等,

最后把myeclipse的jre修改为1.8的,

06.png


在看了下报错信息,发现答应的还是jdk1.6,

原来修改myeclipse的jre为1.8,只是修改了myeclipse中java项目的编译环境,

不是myeclipse自己启动用的jre,

然后各种查,怎么替换myeclipse自己的jdk,

给出的答案都是编译jre的替换方法,抓狂,只能自己搞。


【替换myeclipse自己的jdk】

在myeclipse文件夹下发现一个jdk,C:\_programfiles\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_64_1.6.0.013,

这个是1.6的 ,是不是用的这个呢,

关闭myeclipse,修改文件夹为0131,然后再启动myeclipse,

bingo,报错了,并且很明显的指向,myeclipse就是用的这个jdk中的javaw启动的,

07.png


那么怎么修改呢,找吧,在myeclipse文件夹下找了一圈,

发现C:\_programfiles\MyEclipse\MyEclipse 10\myeclipse.ini中有该jdk地址,

修改把,指向到本地的jdk1.8,

08.png

然而,还是太年轻,依旧报错

09.png

这次都不给直接提示了,让你去看日志,

看完日志发现,找不到该id,

10.png


继续找吧,找到C:\_programfiles\MyEclipse\Common\artifacts.xml中的jdk,发现不好改,放弃。


换个思路,把myeclipse的jdk1.6文件夹的所有文件替换为本地jdk1.8中的文件,最终证明还是不行。。。


【归纳,总结一下】

1.不是egit或者eclipse,myeclipse的问题

2.不是sslVerify的问题

3.myeclipse自带的jdk1.6不支持tls1.2,且暂时没办法替换


之前一直是搜索egit+protocol,现在发现是github的问题,

那就搜索一下github+protocol


【真凶,github不支持tls1.1】

如上,果然搜索到了,http://blog.csdn.net/virusnono/article/details/79361870

11.png

原来是github搞的鬼,晕死,

文中说是2.1发公告,去看了一下,应该是2.8号之后生效,

地址:https://githubengineering.com/crypto-removal-notice/


关键点

1.2.8日后禁止了tls1.1

12.png

2.造成的影响,很多东西不能用了

git windows版本低于1.14.0的,

java版本低于jdk8的,

visual studio等等

13.png


【总结】

1.是github不支持tls1.1导致

2.就myeclipse+egit来说,只能升级为myeclipse2017,自带的是jdk8的版本

3.或者替换为ssh的方式?


【补充】

最终我选择了升级myeclipse到2017 cli 10,

还有一种方式下载jdk6u121,这个版本是支持tls1.2的,

但是oracle收费版本,有兴趣的可以去试试。


所以说,程序员的时间都去哪了~


http://uikoo9.com/
更多精彩内容

求打赏(长按图片即可识别)~
微信 捐助列表:http://uikoo9.com/donate/

阅读:1207