Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 无法与对等方安全通信:没有通用加密算法_Git_Algorithm_Encryption_Fedora20 - Fatal编程技术网

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

Git 无法与对等方安全通信:没有通用加密算法,git,algorithm,encryption,fedora20,Git,Algorithm,Encryption,Fedora20,我是fedora 20的用户。克隆存储库时,我遇到以下错误: “克隆成‘git_任务’。。。 致命:无法访问“”:无法与对等方安全通信:没有通用加密算法 我不知道该怎么办?需要帮助。最简单的解决方案就是使用http而不是https: $ git clone http://openhatch.org/git-mission-data/git/hithard/ Cloning into 'hithard'... remote: Counting objects: 3, done. remote: T

我是fedora 20的用户。克隆存储库时,我遇到以下错误: “克隆成‘git_任务’。。。 致命:无法访问“”:无法与对等方安全通信:没有通用加密算法


我不知道该怎么办?需要帮助。

最简单的解决方案就是使用
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

提到:

我已经有一个git接受的补丁来解决这个问题

这确实已经被接受,并合并到Git 2.5+(2015年第二季度)

见2015年5月8日。
(于2015年5月22日被合并)

http
:添加对指定SSL密码列表的支持 向git教授一个新选项“
http.sslCipherList
”,该选项允许 指定协商SSL连接时要使用的密码列表。
该设置可由
GIT\u SSL\u CIPHER\u列表
环境覆盖 变数

目前的方案包括:

http.sslCipherList:
协商SSL连接时使用的SSL密码列表。
可用的密码取决于libcurl是基于NSS还是OpenSSL构建的,以及使用的加密库的特定配置。
在内部设置“CURLOPT_SSL_CIPHER_LIST”选项;看

可以被“
GIT\u SSL\u CIPHER\u LIST
”环境变量覆盖。
要强制git使用libcurl的默认密码列表并忽略任何显式的
http.sslCipherList
选项,请将“
git\u SSL\u cipher\u list
”设置为空字符串


这在2015年可能会派上用场:

  • “”
  • “”
  • 使用(,Logjam攻击利用Diffie-Hellman密钥交换部署方式的弱点)

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

http
:添加对指定SSL版本的支持 参见(2015年8月14日)作者。
帮助人:。
(于2015年8月26日合并)

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

  • sslv2
  • sslv3
  • tlsv1
  • tlsv1.0
  • tlsv1.1
  • tlsv1.2
可以被“
GIT\u SSL\u VERSION
”环境变量覆盖。
要强制git使用libcurl的默认ssl版本并忽略任何显式的
http.sslversion
选项,请将“git\u ssl\u version”设置为空字符串


哇!谢谢。但我真的很想知道为什么这样做有效,而不是“https”@mattdm,至少在Fedora上,
curl
使用的是NSS加密库,而不是OpenSSL。至少,只有来自的“NSSCipherSuite”的值似乎有效。我有一个解决这个问题的方法。祝贺。该修补程序现在已合并。在意识到你是这个补丁的作者之前,我已经把所有的答案都写在下面了!您将能够使用git 2.5+°(2015年第2季度)将密码列表传递给curl in git。看见
http.sslVersion