Hi Lars & Konst,

On Mon, 7 Aug 2017, Konstantin Khomoutov wrote:

> On Sun, Aug 06, 2017 at 01:16:46PM +0200, Lars Schneider wrote:
> 
> [...]
> > >  * It is now possible to switch between Secure Channel and OpenSSL for
> > >    Git's HTTPS transport by setting the http.sslBackend config
> > >    variable to "openssl" or "schannel"; This is now also the method
> > >    used by the installer (rather than copying libcurl-4.dll files
> > >    around).
> > 
> > Does anyone have a pros/cons list for this option?

There is no exhaustive list of pros/cons as of time of writing. Off the
top of my head:

OpenSSL pros:
- well-tested
- been the only option for Git for Windows in almost a decade

OpenSSL cons:
- does not integrate with the Windows Certificate Store

Secure Channel pros:
- well-tested
- is an integral part of the Windows Operating System
- supports the Windows Certificate Store

Secure Channel cons:
- has not been used by many Git for Windows users yet (so may have some
  surprising issues?)
- does not support OpenSSL's way of adding custom certificates via
  ca-bundle.crt

The big deal with the Windows Certificate Store? It can be administered
enterprise-wide via regular Windows administration tools. That makes a
huge difference when working with an internal server that has a custom SSL
certificate.

Please note that I, personally, have used Git for Windows almost
exclusively via Secure Channel since late January this year. I have not
had *any* trouble. But then, I do not use servers with custom SSL
certificates at the moment.

> > AFAIK OpenSSL is still the default in the GfW installer and I wonder
> > why.

Only one reason: the law of least surprise. Some users went to certain
lengths when working with custom SSL certificates, building elaborate
upgrade scenarios that modify the ca-bundle.crt file (and of course none
of those efforts try to help any other user having the same problem).

> > My gut feeling would be to go with the SSL implementation shipped with
> > the OS. However, I don't have enough knowledge of either
> > implementation to make an assessment.

The reason I worked on cURL to allow choosing the SSL backend at runtime
rather than build time is so that you can test this easier.

Personally, I think that Secure Channel is the better option, for the same
reason you mentioned: it is integrated with Windows. So if you configure
proxies via regular Windows settings, Secure Channel will definitely
handle it as expected. If you trust individual custom certificates via
regular Windows mechanisms, Secure Channel will pick that up (IIUC).

Therefore I would expect Secure Channel to provide a far superior user
experience to OpenSSL.

As a consequence, my plan is to switch the default from OpenSSL to Secure
Channel when I feel that enough users have tested that backend and are as
satisfied with it as I am. This will of course *not* affect users who
upgrade, as the Git for Windows installer remembers previous settings and
reapplies them on upgrades.

> One fact which immediately comes to mind is that both frameworks use
> different sets of certificates (schannel uses the system's one, and
> OpenSSL uses what gets shipped with it).  Another fact is that they
> might have different sets or protocols implemented and/or enabled by
> default.  Hence switching schannel on for people who used OpenSSL might
> break things for them.

Indeed. OTOH Secure Channel should be a safe default.

Ciao,
Dscho

Reply via email to