Git development
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Ron Nazarov <ron@noisytoot.org>
Cc: git@vger.kernel.org,
	"Stanislav Malishevskiy" <stanislav.malishevskiy@gmail.com>,
	"Jeff King" <peff@peff.net>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Stanislav Malishevskiy" <s.malishevskiy@auriga.com>
Subject: Re: [PATCH] config: add http.sslVerifyHost option
Date: Wed, 12 Aug 2026 13:56:50 +0200	[thread overview]
Message-ID: <anxfgvcDkV6k1BLb@pks.im> (raw)
In-Reply-To: <7b833cd4-bad3-462a-9860-a8153d4f6b0d@noisytoot.org>

On Wed, Aug 12, 2026 at 04:31:59AM +0100, Ron Nazarov wrote:
> On 11/08/2026 13:40, Patrick Steinhardt wrote:
> > On Fri, Aug 07, 2026 at 04:33:14PM +0100, Ron Nazarov wrote:
> > > This allows for disabling host verification without completely
> > > disabling TLS certificate verification.  This is useful when using TLS
> > > in a decentralized way (similar to how one would use SSH), where the
> > > remote endpoint has a self-signed certificate that does not
> > > necessarily have a valid CN (or any CN at all), and you set
> > > http.sslCAInfo to that specific certificate.  Without such an option,
> > > it is impossible to use a certificate with a non-matching hostname
> > > without completely disabling TLS verification, which is insecure.
> > 
> > Arguably both options are insecure, this new option just pretends to be
> > secure. If we accept arbitrary certificates for an endpoint, then it
> > becomes trivial for somebody to perform a man-in-the-middle attack
> > against you by simply swapping out the certificate against a self-signed
> > one. And man-in-the-middle attacks are basically what we want to protect
> > against with TLS.
> > 
> > [...]
> > 
> > Maybe I'm missing something obvious. But if so, I think both the commit
> > message and the documentation would need to be amended to document that
> > gap and state that yes, this is still insecure.
> > 
> 
> The intention is for this to be combined with setting sslCAInfo and/or
> sslCAPath to the specific self-signed certificate used for the remote
> (rather than to something like a public CA where anyone can easily get a
> certificate signed by it).  If used on its own (with the default CA
> certificate store) it is of course insecure.  The commit message already
> states this ("and you set http.sslCAInfo to that specific certificate",
> although perhaps it could be made more clear that if you don't do this it is
> insecure), but the documentation currently does not.  The specific use-case
> I am currently using this option for is a private git server accessible over
> a public IPv6 address using a self-signed certificate which does not have a
> valid CN (or a subjectAltName) at all.  I have something like this in my
> .gitconfig:
> 
> [http "https://[2001:db8::1]/"]
>         sslCAInfo = /path/to/cert.pem
>         sslVerifyHost = false
>         sslCAPath = /dev/null
> 
> where /path/to/cert.pem is the specific certificate served by the git
> server, which I have verified externally to belong to the owner.  This
> provides the same security guarantees as using SSH with the server's
> fingerprint in my known_hosts file.

Okay, that's a whole lot more reasonable then. You essentially pin the
certificate that you expect from the server-side, and as a result noone
can intercept the traffic unless they have the private key. We should
definitely update the documentation then to highlight how users can
securely use `sslVerifyHost` so that they're not on their own to figure
this out.

> (Also, this is unrelated to your review, but for some reason my original
> email containing the patch is missing from lore.kernel.org.  I don't know
> why, since people not in the CC list are replying, it presumably must have
> been sent to the list.)

Hm, curious. No idea why that is -- hopefully, v2 will land just fine.

Patrick

      parent reply	other threads:[~2026-08-12 11:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260807153315.9586-1-ron@noisytoot.org>
2026-08-11 12:40 ` [PATCH] config: add http.sslVerifyHost option Patrick Steinhardt
2026-08-11 21:19   ` brian m. carlson
     [not found]   ` <7b833cd4-bad3-462a-9860-a8153d4f6b0d@noisytoot.org>
2026-08-12 11:56     ` Patrick Steinhardt [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=anxfgvcDkV6k1BLb@pks.im \
    --to=ps@pks.im \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=ron@noisytoot.org \
    --cc=s.malishevskiy@auriga.com \
    --cc=stanislav.malishevskiy@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox