无法与对等方安全通信:没有通用的加密算法

时间:2015-05-07 01:59:52

标签: git algorithm encryption fedora20

我是fedora 20用户。在克隆存储库时,我收到以下错误: “克隆到'git_missions'...... 致命:无法访问“https://openhatch.org/git-mission-data/git/hithard/”:无法与对等方安全通信:没有通用的加密算法。 “

我无法做什么?需要帮助。

2 个答案:

答案 0 :(得分:7)

最简单的解决方案就是使用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。要做到这一点的补丁是微不足道的 - here is one version I just made - 但我不知道在上游获得这个接受的可能性是多少。

答案 1 :(得分:1)

  

不幸的是,没有办法将密码列表传递给git

larsks提到in the comments

  

我已经接受了git解决此问题的补丁

确实已经接受了,并且在Git 2.5 +(2015年第2季度)中合并

2015年5月8日commit f6f2a9e旁边的Lars Kellogg-Stedman (larsks) Junio C Hamano -- gitster --在2015年5月22日commit 39fa791合并)

  

http:添加对指定SSL密码列表的支持

     

教git一个新的选项,&#34; http.sslCipherList&#34;,允许一个   指定协商SSL连接时要使用的密码列表   GIT_SSL_CIPHER_LIST环境可以覆盖该设置   变量

git config man page现在包括:

http.sslCipherList:
  

协商SSL连接时使用的SSL密码列表   可用的密码取决于libcurl是针对NSS还是OpenSSL构建的,以及正在使用的加密库的特定配置。
  在内部设置&#39; CURLOPT_SSL_CIPHER_LIST&#39;选项;请参阅libcurl documentation for more details on the format of this list

     

可以被&#39; GIT_SSL_CIPHER_LIST&#39;覆盖。环境变量。
  要强制git使用libcurl的默认密码列表并忽略任何明确的http.sslCipherList选项,请设置&#39; GIT_SSL_CIPHER_LIST&#39;到空字符串。

这可以在2015年派上用场:

2015年8月更新:Git 2.6 +(2015年第3季度)将允许明确指定SSL版本:

  

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

commit 01861cbElia Pinto (devzero2000)(2015年8月14日) 帮助:Eric Sunshine (sunshineco)
(由Junio C Hamano -- gitster --合并于commit ed070a4,2015年8月26日)

http.sslVersion
  

协商SSL连接时使用的SSL版本,如果要强制使用默认值   可用和默认版本取决于libcurl是针对NSS还是OpenSSL构建的,以及正在使用的加密库的特定配置。在内部设置了CURLOPT_SSL_VERSION&#39;选项;有关此选项的格式以及支持的ssl版本的更多详细信息,请参阅libcurl文档   实际上,此选项的可能值为:

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

可以被&#39; GIT_SSL_VERSION&#39;覆盖。环境变量。
  要强制git使用libcurl的默认ssl版本并忽略任何显式http.sslversion选项,请设置&#39; GIT_SSL_VERSION&#39;到空字符串。