Git 的 HTTPS 代理可能需要自己的客户端证书
单独配置代理的 TLS CA、客户端证书和私钥,与仓库的 TLS 及 HTTP 登录设置相互独立。
有些 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 证书的路径并不能可移植地替代各平台的证书存储接口。