提问人:Capt. Crunch 提问时间:10/29/2012 最后编辑:Capt. Crunch 更新时间:1/3/2018 访问量:2492
通过 git 将密码传递给 libcurl?
passing ciphers to libcurl through git?
问:
环境: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 的源代码)。
答:
不,指定 libcurl 密码列表的选项称为 CURLOPT_SSL_CIPHER_LIST,但 git 不使用。
您需要修改 git 源代码才能引入此功能。应该不会太难,也许你可以说服 git 项目在未来接受这个变化!
Git 支持选择 SSL 密码
从 Git 版本 2.5.0(请参阅发行说明)开始,您可以使用 git 配置变量来执行此操作。如果您能够升级 Git 版本,这是通过 Git 将密码列表传递给 libcURL 的最佳方式。http.sslCipherList
该变量在 Git 的文档中描述如下:http.sslCipherList
协商 SSL 连接时要使用的 SSL 密码列表。可用的密码取决于 libcurl 是针对 NSS 还是 OpenSSL 构建的,以及正在使用的加密库的特定配置。在内部,这设置了选项;有关此列表格式的更多详细信息,请参阅 libcurl 文档。
CURLOPT_SSL_CIPHER_LIST
Git 命令
要为 Git 全局设置密码列表,您需要运行:
git config --global http.sslCipherList "<List of Cipher Identifiers>"
了解 cURL 接受的密码标识符因 cURL 链接的 SSL 库而异,这一点非常重要!这使得此配置值在所有 cURL 安装之间不可移植,这些安装在其链接的 SSL 库中有所不同。
此外,虽然我在下面链接了特定于后端的文档,但只有关于密码标识符的 cURL 文档是可靠的,因为 cURL 开发人员没有完美地重现每个后端的各种标识符,如此邮件列表线程中所述。
资源
http.sslCipherList
的 git config 部分- CURLOPT_SSL_CIPHER_LIST变量的 cURL 手册页
- 所有后端的 cURL 密码(可靠)
- openSSL 后端支持的密码
- NSS 后端支持的mod_NSS密码
- NSS 后端支持的mod_SSL密码
评论
curl --cipher
CURLOPT_SSL_CIPHER_LIST