github不支持tls1.1导致egit cannot open git-upload-pack

【前言】

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


【起因】

过年后开始上班,大概是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,

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


【凭经验各种尝试】

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

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

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

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

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

还是不行。


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

看了一下环境配置,

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

好像是有点旧,

查到egit最新版本是4.10,

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

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

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

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

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

行,白忙活了,抓狂。


【冷静的分析】

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

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

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

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

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


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

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

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

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


【嫌疑人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的,


在看了下报错信息,发现答应的还是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启动的,


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

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

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

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

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

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


继续找吧,找到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

原来是github搞的鬼,晕死,

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

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


关键点

1.2.8日后禁止了tls1.1

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

git windows版本低于1.14.0的,

java版本低于jdk8的,

visual studio等等


【总结】

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

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

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


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


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

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

你可能感兴趣的:(02_JavaEE)