簡體   English   中英

無法與對等方安全通信:沒有通用的加密算法

[英]Cannot communicate securely with peer: no common encryption algorithm(s)

我是fedora 20用戶。 在克隆存儲庫時,我收到以下錯誤:“克隆到'git_missions'...致命:無法訪問' https://openhatch.org/git-mission-data/git/hithard/ ':無法安全地與peer:沒有通用的加密算法。“

我不知道該怎么辦?需要幫助。

最簡單的解決方案是使用http而不是https

$ git clone http://openhatch.org/git-mission-data/git/hithard/
Cloning into 'hithard'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.

我認為錯誤本身(“沒有通用的加密算法”)是准確的; 看來服務器想要使用git底層SSL庫不支持的某種橢圓曲線密碼(TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)。 您可以使用wireshark東西捕獲git和服務器之間的SSL握手,並查看來回傳遞的選項。

至少在我的系統上, curl似乎不支持這個密碼, git使用libcurl來處理https / http連接。

更新

所以,基於我對@mattdm的最后評論,我發現我的系統上的curl使用的是NSS加密庫,以下工作原理如下:

curl --ciphers ecdhe_ecdsa_aes_128_gcm_sha_256 https://openhatch.org/

不幸的是,沒有任何方法可以將密碼列表傳遞給git 讓它這樣做的補丁是微不足道的 - 這是我剛剛制作的一個版本 - 但我不知道上游接受這個版本的可能性是多少。

不幸的是,沒有任何方法可以將密碼列表傳遞給git

larsks 在評論中提到:

我已經接受了一個補丁來解決這個問題

這已經被接受,並在Git 2.5+中合並(2015年第2季度)

請參閱2015年5月8日Lars Kellogg-Stedman( larsks 提交的f6f2a9e
(由Junio C gitster合並- gitster - in commit 39fa791 ,2015年5月22日)

http :添加對指定SSL密碼列表的支持

教git一個新的選項,“ http.sslCipherList ”,它允許用戶指定協商SSL連接時使用的密碼列表。
該設置可以被GIT_SSL_CIPHER_LIST環境變量覆蓋。

git config手冊頁現在包括:

http.sslCipherList:

協商SSL連接時使用的SSL密碼列表。
可用的密碼取決於libcurl是針對NSS還是OpenSSL構建的,以及正在使用的加密庫的特定配置。
在內部設置'CURLOPT_SSL_CIPHER_LIST'選項; 有關此列表格式的更多詳細信息,請參閱libcurl文檔

可以被' GIT_SSL_CIPHER_LIST '環境變量覆蓋。
要強制git使用libcurl的默認密碼列表並忽略任何顯式的http.sslCipherList選項,請將' GIT_SSL_CIPHER_LIST '設置為空字符串。


這可以在2015年派上用場:


2015年8月更新:Git 2.6 +(2015年第3季度)將允許明確指定SSL版本:

http :添加對指定SSL版本的支持

請參閱Elia Pinto的 承諾01861cb (2015年8月14日) devzero2000
幫助: Eric Sunshine( sunshineco
(由Junio C gitster合並- gitster - in commit ed070a4 ,2015年8月26日)

http.sslVersion

如果要強制使用默認值,則在協商SSL連接時使用的SSL版本。
可用和默認版本取決於libcurl是針對NSS還是OpenSSL構建的,以及正在使用的加密庫的特定配置。 在內部設置' CURLOPT_SSL_VERSION '選項; 有關此選項的格式以及支持的ssl版本的更多詳細信息,請參閱libcurl文檔。
實際上,此選項的可能值為:

  • SSLV2
  • SSLV3
  • 使用TLSv1
  • tlsv1.0
  • tlsv1.1
  • TLSv1.2工作

可以被' GIT_SSL_VERSION '環境變量覆蓋。
要強制git使用libcurl的默認ssl版本並忽略任何顯式的http.sslversion選項,請將'GIT_SSL_VERSION'設置為空字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM