5

环境:Fedora 15 x64(是的,我们正在远离它),git 1.7.11.1。

我们遇到了 git clone 的问题,该问题在 https 存储库上失败,因为客户端默认情况下未启用 Git 服务器使用的密码。

我们设法用普通的“curl -v”(curl 7.21.3,但 git 似乎使用它自己的副本)复制了这个问题:

curl -v https://git.repo.com

(内部服务器名称被替换)像 Git 一样失败,但是:

curl --cipher rsa_rc4_128_sha -v https://git.repo.com

成功。

现在的问题是我们如何将这样的标志传递给 Git 使用的 libcurl。到目前为止,我还没有找到这样的方法(谷歌搜索了 libcurl、git,查看了 Git 和 libcurl 的来源)。

4

2 回答 2

2

不,为 libcurl 指定密码列表的选项称为CURLOPT_SSL_CIPHER_LIST但 git 不使用该选项。

您需要修改 git 源代码以引入此功能。不应该太难,也许你可以说服git 项目在未来接受这个改变!

于 2014-01-21T10:26:02.800 回答
2

Git 支持选择 SSL 密码

由于 Git 版本 2.5.0(请参阅发行说明),您可以使用http.sslCipherListgit 配置变量来执行此操作。如果您能够升级您的 Git 版本,这是通过 Git 将密码列表传递给 libcURL 的最佳方式。

http.sslCipherList变量在 Git 的文档中描述如下:

协商 SSL 连接时使用的 SSL 密码列表。可用的密码取决于 libcurl 是针对 NSS 还是 OpenSSL 构建的,以及正在使用的加密库的特定配置。这在内部设置了CURLOPT_SSL_CIPHER_LIST选项;有关此列表格式的更多详细信息,请参阅libcurl 文档。

git 命令

要为 Git 全局设置密码列表,您将运行:

git config --global http.sslCipherList "<List of Cipher Identifiers>"

了解cURL 接受的密码标识符根据 cURL 链接的 SSL 库而有所不同,这一点非常重要!这使得此配置值在其链接的 SSL 库中不同的所有 cURL 安装之间不可移植。

此外,虽然我在下面链接了后端特定文档,但只有关于密码标识符的 cURL 文档是可靠的,因为 cURL 开发人员没有完美地重现每个后端的各种标识符,如邮件列表线程中所述。

资源

于 2018-01-02T22:38:24.847 回答