git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Bug? git submodule add SSL certificate problem: unable to get local issuer certificate

From
Jens Lehmann <jens.lehmann@web.de>
Date
Mar 10, 2015, 08:56 UTC
Message-ID
<54FEB1CA.7020204@web.de>
In-Reply-To
<20150309074339.GA31866@peff.net>
Am 09.03.2015 um 20:43 schrieb Jeff King:
Show 32 quoted lines
> On Thu, Mar 05, 2015 at 04:20:10PM +0100, Aschemann Gerd wrote:
>
>> seems to be a bug: If adding a submodule from an https URL with a certificate issued by StartSSL (or even a private/self-signed one?) leads to the following error:
>>
>>    $ git -c http.sslverify=false submodule add https://example.com/git/xxx.git
>>    Cloning into 'xxx'...
>>    fatal: unable to access 'https://example.com/git/xxx.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
>>    Clone of 'https://example.com/git/xxx.git' into submodule path 'xxx' failed
>>
>> Performing a simple clone works well:
>>
>>    $ git -c http.sslverify=false clone https://example.com/git/xxx.git
>>    Cloning into 'xxx'...
>>    Password for 'https://example.com':
>
> I think the problem is that the submodule code wipes all "local"
> environment variables before executing the submodule clone, and that
> includes the variable containing command-line config.
>
> Config like this is in a funny boat. We do not want it to cross
> transport boundaries, so that if we run:
>
>    git -c foo=bar clone /some/local/path
>
> the process serving /some/local/path should not see the "foo" option[1].
> But for submodules in the same repository, keeping the shared config is
> probably more reasonable (I can imagine a config variable that you might
> want to behave differently between the submodule and the main project,
> but I could not think of any off-hand, and I expect it would be a rare
> exception).
>
> Submodule folks (cc'd) may have opinions.

I tend to rather not share configs. While I agree that for the example which started this it would be correct to simply pass http.sslverify, that doesn't always make sense (e.g. it never does for a setting like core.worktree).

We already have two options for submodule add and update that are passed to the clone command (--reference & --depth), maybe it is time to add another one for passing config options to clone (which then get set permanently in the submodule's config).

Show 19 quoted lines
> -Peff
>
> [1] This behavior comes from 655e8d9 (do not pass "git -c foo=bar"
>      params to transport helpers, 2010-08-24), and the original
>      discussion is here:
>
>        http://thread.gmane.org/gmane.comp.version-control.git/154241/focus=154255
>
>      I am tempted to simply drop the transport-layer blocking of config
>      options. It is not buying us anything security-wise, and it could
>      actually be convenient to pass options to the "other side". But it's
>      probably a bad idea, if only because it would not be consistently
>      applied to repos on the other side of git://, http://, or ssh
>      sessions.
>
>      So the sanest fix, if we want submodules to inherit the command-line
>      config, would be to drop GIT_CONFIG_PARAMETERS from local_repo_env,
>      and have the transport code suppress it manually.
>
Previous: Jeff KingNext: Jeff King
Message 3 of 4 in “Bug? git submodule add SSL certificate problem: unable to get local issuer certificate”
  1. Aschemann GerdMar 5, 2015
  2. Jeff KingMar 9, 2015
  3. Jens LehmannMar 10, 2015
  4. Jeff KingMar 21, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.