curl/docs
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
..
cmdline-opts docs: add a note about --compressed to note about binary output 2026-01-04 00:10:40 +01:00
examples windows: bump minimum to Vista (from XP) 2026-01-17 11:41:49 +01:00
internals tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
libcurl windows: add build option to use the native CA store 2026-01-17 19:18:52 +01:00
tests tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
.gitignore docs: add RELEASE-TOOLS.md.dist to .gitignore 2024-07-01 22:49:55 +02:00
ALTSVC.md docs: fold long lines 2025-12-11 11:42:28 +01:00
BINDINGS.md tidy-up: URLs (cont.) and mdlinkcheck 2025-12-10 01:21:07 +01:00
BUG-BOUNTY.md tidy-up: URLs 2025-09-23 00:34:46 +02:00
BUGS.md docs: fix two typos 2025-07-01 22:53:04 +02:00
CIPHERS-TLS12.md docs: update CIPHERS.md 2024-08-12 23:35:56 +02:00
CIPHERS.md tidy-up: update MS links, allow long URLs via checksrc 2025-09-20 11:49:23 +02:00
CMakeLists.txt tests: move test docs into /docs 2025-05-28 15:00:03 +02:00
CODE_OF_CONDUCT.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CODE_REVIEW.md docs: fix broken link in CODE_REVIEW.md 2025-06-21 10:32:06 +02:00
CONTRIBUTE.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
curl-config.md docs: minor edits to please the new spellchecker regime 2025-02-27 13:15:21 +01:00
CURL-DISABLE.md build: add build-level CURL_DISABLE_TYPECHECK options 2025-11-21 13:48:35 +01:00
CURLDOWN.md misc: fix typos 2025-07-12 08:59:44 +02:00
DEPRECATE.md windows: bump minimum to Vista (from XP) 2026-01-17 11:41:49 +01:00
DISTROS.md tidy-up: URLs 2025-12-09 00:19:10 +01:00
EARLY-RELEASE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
ECH.md tidy-up: URLs 2025-12-09 00:19:10 +01:00
EXPERIMENTAL.md docs/EXPERIMENTAL.md: add a mention of HTTPSRR as experimental 2025-01-16 19:41:42 +01:00
FAQ.md tidy-up: miscellaneous 2025-12-12 04:18:48 +01:00
FEATURES.md FEATURES.md: fix typo 2024-08-23 08:46:09 +02:00
GOVERNANCE.md GOVERNANCE.md: Post-Daniel BDFL 2026-01-15 17:49:29 +01:00
HELP-US.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
HISTORY.md HISTORY: add current website stats 2025-12-16 23:33:54 +01:00
HSTS.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
HTTP-COOKIES.md tidy-up: URLs 2025-09-23 00:34:46 +02:00
HTTP3.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
HTTPSRR.md tidy-up: URLs 2025-09-23 00:34:46 +02:00
INFRASTRUCTURE.md GHA/checkdocs: re-enable proselint, update setup, fix issues found 2025-12-11 11:42:28 +01:00
INSTALL INSTALL: converted to markdown => INSTALL.md 2016-10-21 15:57:29 +02:00
INSTALL-CMAKE.md windows: add build option to use the native CA store 2026-01-17 19:18:52 +01:00
INSTALL.md windows: bump minimum to Vista (from XP) 2026-01-17 11:41:49 +01:00
INTERNALS.md windows: bump minimum to Vista (from XP) 2026-01-17 11:41:49 +01:00
IPFS.md IPFS.md: wrap long lines 2025-12-08 17:28:43 +01:00
KNOWN_BUGS.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
KNOWN_RISKS.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
MAIL-ETIQUETTE.md docs: remove dead URLs 2025-12-05 23:41:41 +01:00
Makefile.am tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
MANUAL.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
mk-ca-bundle.md mk-ca-bundle.md: the file format docs URL is permaredirected 2025-12-08 22:07:32 +01:00
options-in-versions tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
README.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
RELEASE-PROCEDURE.md RELEASE-PROCEDURE.md: drop the _newslog edit mention 2025-09-08 11:12:47 +02:00
ROADMAP.md CI: add whitespace checker 2024-06-27 13:33:30 +02:00
runtests.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
RUSTLS.md tidy-up: URLs 2025-09-23 00:34:46 +02:00
SECURITY-ADVISORY.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SPONSORS.md SPONSORS.md: clarify that we don't promise goods or services 2025-02-05 23:40:24 +01:00
SSL-PROBLEMS.md badwords: catch and fix more variants of NN-bit 2026-01-14 02:35:00 +01:00
SSLCERTS.md tidy-up: miscellaneous 2025-12-12 04:18:48 +01:00
testcurl.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
THANKS THANKS: add contributors from 8.18.0 2026-01-07 07:56:22 +01:00
THANKS-filter RELEASE-NOTES: synced 2025-11-05 14:12:23 +01:00
TheArtOfHttpScripting.md badwords: fix typos found 2026-01-14 03:11:33 +01:00
TODO.md TODO: add point about improving SIGPIPE handling 2026-01-15 22:42:28 +01:00
URL-SYNTAX.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
VERSIONS.md VERSIONS.md: add date for 8.18.0, mention 8.19.0 is pending 2026-01-07 07:56:22 +01:00
VULN-DISCLOSURE-POLICY.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
wcurl.md wcurl: import v2026.01.05 2026-01-06 10:12:31 +01:00

curl logo

Documentation

You find a mix of various documentation in this directory and subdirectories, using several different formats. Some of them are not ideal for reading directly in your browser.

If you would rather see the rendered version of the documentation, check out the curl website's documentation section for general curl stuff or the libcurl section for libcurl related documentation.