【问题标题】:passing ciphers to libcurl through git?通过 git 将密码传递给 libcurl?
【发布时间】:2018-01-03 06:56:09
【问题描述】:

环境: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。到目前为止,我还没有找到这样的方法(google'd about libcurl, git,查看了 Git 和 libcurl 的来源)。

【问题讨论】:

  • 进一步查看 libcurl 源代码,curl --cipher 命令行标志设置了 CURLOPT_SSL_CIPHER_LIST,这在 Git 源代码的任何地方都没有提及。到目前为止,它看起来只是不受支持。 :(

标签: git https libcurl


【解决方案1】:

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

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

【讨论】:

  • 有兴趣知道。 +1
【解决方案2】:

Git 支持选择 SSL 密码

从 Git 版本 2.5.0 (see release notes) 开始,您可以使用 http.sslCipherList git 配置变量来执行此操作。如果您能够升级 Git 版本,这是通过 Git 将密码列表传递给 libcURL 的最佳方式。

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

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

Git 命令

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

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

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

此外,虽然我在下面链接了后端特定文档,但只有关于密码标识符的 cURL 文档是可靠的,因为 cURL 开发人员并没有完美地再现每个后端的各种标识符,详细说明在this mailing list thread

资源

【讨论】:

  • 很好的总结。 +1 来自 Git 2.5+(2015 年第二季度):stackoverflow.com/a/30442395/6309
  • 我只是想在我发帖后查一下,然后我回来发现你已经为我做了跑腿工作。希望在我自己查看介绍版本之前看到您的评论!我已经编辑了答案以包含对所需 git 版本的引用。
  • 没问题:我一直在做那种跑腿的工作(关于新的 Git 功能)很长时间了。
猜你喜欢
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 2023-02-02
  • 2011-09-13
  • 2011-02-16
  • 2014-04-09
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多