繁体   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