curl/lib/vtls
Viktor Szakats 1730407b74
windows: add build option to use the native CA store
With the same semantics as Apple SecTrust, in both libcurl and the curl
tool, when using non-Schannel TLS backends. In practice it means that
it makes TLS work without manually or implicitly configuring a CA bundle
`.crt` file, such as `curl-ca-bundle.crt`.

To enable:
- autotools: `--enable-ca-native`
- cmake: `-DCURL_CA_NATIVE=ON`
- CPPFLAGS: `-DCURL_CA_NATIVE`

When enabled:
- enables `CURLSSLOPT_NATIVE_CA` (libcurl) / `--ca-native`
  and `--proxy-ca-native` (curl tool) options by default.
- unsafe search for an on-disk CA bundle gets disabled by default.
  Equivalent to `--disable-ca-search` with autotools,
  `-DCURL_DISABLE_CA_SEARCH=ON` with CMake.
- build-time detection of CA bundle and CA path gets disabled. As with
  Apple SecTrust. This was already the default for Windows.
- native CA can be disabled at run-time with the `--no-ca-native`
  and/or `--no-proxy-ca-native` command-line options.

Rationale: This build option:
- has a repeat and active interest from packagers and users.
- helps integrating curl with Windows for those who need this.
- it also applies to macOS: #17525
  Shipped in curl 8.17.0.
- makes it trivial to use custom certs configured on the OS.
- frees applications/packagers/users from the task of securely
  distributing, and keeping up-to-date, a CA bundle.
- frees potentially many curl tool from configuring a CA bundle manually
  to access HTTPS (and other TLS) URLs. This is traditionally difficult
  on Windows because there is no concept of a universal, protected,
  non-world-writable, location on the file system to securely store
  a CA bundle.
- allows using modern features regardless of Windows version. Some of
  these features are not supported with Schannel (e.g. HTTP/3, ECH) on
  any Windows version.
- is necessary for HTTP/3 builds, where bootstrapping a CA bundle is not
  possible with Schannel, because MultiSSL is not an option, and HTTP/3
  is not supported with Schannel.

Ref: #16181 (previous attempt)
Ref: https://github.com/curl/curl/discussions/9348
Ref: https://github.com/curl/curl/issues/9350
Ref: https://github.com/curl/curl/pull/13111
Ref: https://github.com/microsoft/vcpkg/pull/46459#issuecomment-3162068701
Ref: 22652a5a4c #14582
Ref: eefd03c572 #18703

Closes #18279
2026-01-17 19:18:52 +01:00
..
apple.c apple sectrust: fix ancient evaluation 2025-12-22 23:00:08 +01:00
apple.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
cipher_suite.c tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
cipher_suite.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
gtls.c build: drop redundant unused variable suppressions 2026-01-14 10:38:34 +01:00
gtls.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
hostcheck.c tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
hostcheck.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
keylog.c tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
keylog.h spelling: 'a' vs 'an' 2025-05-30 11:38:35 +02:00
mbedtls.c mbedtls: remove newline from failf() call 2026-01-16 08:35:34 +01:00
mbedtls.h lib: include files using known path 2025-04-08 17:00:00 +02:00
openssl.c msvc: drop exception, make BIT() a bitfield with Visual Studio 2026-01-17 11:46:31 +01:00
openssl.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
rustls.c msvc: drop exception, make BIT() a bitfield with Visual Studio 2026-01-17 11:46:31 +01:00
rustls.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
schannel.c windows: bump minimum to Vista (from XP) 2026-01-17 11:41:49 +01:00
schannel.h openssl: drop includes unused or duplicate 2025-12-20 13:51:05 +01:00
schannel_int.h time-keeping: keep timestamp in multi, always update 2025-12-18 22:10:06 +01:00
schannel_verify.c tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
vtls.c windows: add build option to use the native CA store 2026-01-17 19:18:52 +01:00
vtls.h build: drop stray ifndef guards for local/internal macros 2026-01-14 12:53:14 +01:00
vtls_int.h vtls: drop unused use_alpn from ssl_connect_data struct 2026-01-02 10:45:12 +01:00
vtls_scache.c build: drop more forward function declarations 2026-01-14 23:34:05 +01:00
vtls_scache.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
vtls_spack.c tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
vtls_spack.h build: fix build errors/warnings in rare configurations 2025-07-23 22:17:03 +02:00
wolfssl.c dns: flatten the include tree 2026-01-17 11:45:18 +01:00
wolfssl.h wolfssl: fix possible assert with !HAVE_NO_EX wolfSSL builds 2025-12-07 17:01:45 +01:00
x509asn1.c tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00
x509asn1.h tidy-up: miscellaneous 2025-12-26 22:06:09 +01:00