mirror of
https://github.com/curl/curl.git
synced 2026-08-25 01:13:32 +03:00
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
This commit is contained in:
parent
5aa303f1bf
commit
1730407b74
9 changed files with 83 additions and 13 deletions
|
|
@ -34,6 +34,9 @@
|
|||
/* Default SSL backend */
|
||||
#cmakedefine CURL_DEFAULT_SSL_BACKEND "${CURL_DEFAULT_SSL_BACKEND}"
|
||||
|
||||
/* Use native CA store */
|
||||
#cmakedefine CURL_CA_NATIVE 1
|
||||
|
||||
/* disables alt-svc */
|
||||
#cmakedefine CURL_DISABLE_ALTSVC 1
|
||||
|
||||
|
|
|
|||
|
|
@ -513,9 +513,13 @@ static const struct feat features_table[] = {
|
|||
#ifdef USE_LIBPSL
|
||||
FEATURE("PSL", NULL, CURL_VERSION_PSL),
|
||||
#endif
|
||||
#ifdef USE_SSL
|
||||
#ifdef USE_APPLE_SECTRUST
|
||||
FEATURE("AppleSecTrust", NULL, 0),
|
||||
#elif defined(CURL_CA_NATIVE)
|
||||
FEATURE("NativeCA", NULL, 0),
|
||||
#endif
|
||||
#endif /* USE_SSL */
|
||||
#ifdef USE_SPNEGO
|
||||
FEATURE("SPNEGO", NULL, CURL_VERSION_SPNEGO),
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ CURLcode Curl_ssl_easy_config_complete(struct Curl_easy *data)
|
|||
#endif
|
||||
|
||||
if(Curl_ssl_backend() != CURLSSLBACKEND_SCHANNEL) {
|
||||
#ifdef USE_APPLE_SECTRUST
|
||||
#if defined(USE_APPLE_SECTRUST) || defined(CURL_CA_NATIVE)
|
||||
if(!sslc->custom_capath && !sslc->custom_cafile && !sslc->custom_cablob)
|
||||
sslc->native_ca_store = TRUE;
|
||||
#endif
|
||||
|
|
@ -341,7 +341,7 @@ CURLcode Curl_ssl_easy_config_complete(struct Curl_easy *data)
|
|||
#ifndef CURL_DISABLE_PROXY
|
||||
sslc = &data->set.proxy_ssl;
|
||||
if(Curl_ssl_backend() != CURLSSLBACKEND_SCHANNEL) {
|
||||
#ifdef USE_APPLE_SECTRUST
|
||||
#if defined(USE_APPLE_SECTRUST) || defined(CURL_CA_NATIVE)
|
||||
if(!sslc->custom_capath && !sslc->custom_cafile && !sslc->custom_cablob)
|
||||
sslc->native_ca_store = TRUE;
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue