Wei Shuyu wrote:
> Git has been taught to support an https:// used for http.proxy when
> using recent versions of libcurl.
nit: commit messages use the imperative mood, as though commanding the
code base to do something:
Support https:// for http.proxy when using recent versions of
curl.
[...]
> To use https proxy with self-signed certs, we need a way to
> unset CURLOPT_PROXY_SSL_VERIFYPEER and CURLOPT_PROXY_SSL_VERIFYHOST
> just like direct SSL connection. This is required if we want
> use t/lib-httpd to test proxy.
Interesting. Sounds promising.
> In this patch I reuse http.sslverify to do this, do we need an
> independent option like http.sslproxyverify?
I think a separate option is a good idea. This way, I can use
[http "https://example.com"]
sslVerify = false
to fetch from a misconfigured server or
[http "https://example.com"]
proxy = https://127.0.0.1
sslVerifyProxy = false
to proxy through a misconfigured proxy. Alternatively, is there a
straightforward way to make
[http "https://example.com"]
proxy = https://127.0.0.1
[http "https://127.0.0.1"]
sslVerify = false
do that? Something like
struct urlmatch_config proxy_config = { STRING_LIST_INIT_DUP };
config.section = "http";
config.key = NULL;
config.collect_fn = proxy_options;
config.cascade_fn = git_default_config;
config.cb = NULL;
config.url = normalized_proxy_url;
git_config(urlmatch_config_entry, &config);
How does this interact with the GIT_SSL_NO_VERIFY environment
variable?
> To fully support https proxy, we also need ways to set more options
> such as CURLOPT_PROXY_SSLCERT. However, I'm not sure if we need to
> support them.
That's for client certs, right? Would it work to make that
configurable as
[http "https://127.0.0.1"]
sslCert = ...
?
That said, I agree with you that it's not a prerequisite for this
initial patch.
Thanks,
Jonathan