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/ |