有些 HTTPS 正向代理会在 Git 到代理的 TLS 连接过程中要求客户端证书。这属于独立的认证交换,与登录仓库是两回事。

对于使用 PEM 文件的兼容 Git/libcurl TLS 后端,相关配置如下:

[http]
    proxy = https://proxy.example:8443
    proxySSLCAInfo = /secure/proxy-ca.pem
    proxySSLCert = /secure/proxy-client.pem
    proxySSLKey = /secure/proxy-client.key
    proxySSLCertPasswordProtected = true

请使用为代理 TLS 方案实际提供的文件。把配置应用到预期的 Git 作用域;仓库级配置可以把这条路径限制在该检出副本内。

设置项作用
proxySSLCAInfo用于验证 HTTPS 代理的 CA 包
proxySSLCert向该代理出示的客户端证书
proxySSLKey与客户端证书匹配的私钥
proxySSLCertPasswordProtected启用 Git 的密码提示,以处理受保护的代理证书和密钥材料

https:// 形式的代理 URL 对这次 TLS 交换至关重要。普通 HTTP 代理把 CONNECT 转发到 HTTPS 仓库,并不会因此在自身的监听端做 TLS 客户端证书认证。

仓库的证书信任以及任何仓库客户端证书都有自己的 ssl 配置。同样,使用 Proxy-Authenticate 的 HTTP 代理质询是另一种认证机制。

维护这套配置时,请检查所链接的 libcurl 版本、TLS 后端以及受支持的证书格式。指向 PEM 证书的路径并不能可移植地替代各平台的证书存储接口。

相关文章