1. 程式人生 > >github不支援tls1.1導致egit cannot open git-upload-pack

github不支援tls1.1導致egit cannot open git-upload-pack

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的方式?


所以說,程式設計師的時間都去哪了~


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

求打賞(長按圖片即可識別)~
微信 捐助列表:http://uikoo9.com/donate/