curl/docs
Viktor Szakats 22652a5a4c
curl: add options for safe/no CA bundle search (Windows)
Add `CURL_CA_SEARCH_SAFE` build-time option to enable CA bundle search
in the `curl` tool directory. The lookup method was already used to find
`.curlrc` and `_curlrc` (on Windows). On Windows it overrides the unsafe
default `SearchPath()` method.

Enable with:
- cmake: `-DCURL_CA_SEARCH_SAFE=ON`
- autotools: `--enable-ca-search-safe`
- raw: `CPPFLAGS=-DCURL_CA_SEARCH_SAFE`

On Windows, before this patch the whole `PATH` was searched for
a CA bundle. `PATH` may contain unwanted or world-writable locations,
including the current directory. Searching them all is convenient to
pick up any CA bundle, but not secure.

The Muldersoft curl distro implements such CA search via a custom
patch for Windows:
cd652d4792/patch/curl_tool_doswin.diff (L50)

MSYS2/mingw-w64 distro has also been rolling a patch solving this:
https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-curl/0001-Make-cURL-relocatable.patch
https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-curl/pathtools.c

Also add option to fully disable Windows CA search:
- cmake: `-DCURL_DISABLE_CA_SEARCH=ON`
- autotools: `--disable-ca-search`
- raw: `CPPFLAGS=-DCURL_DISABLE_CA_SEARCH`.

Both options are considered EXPERIMENTAL, with possible incompatible
changes or even (partial) removal in the future, depending on feedback.

An alternative, secure option is to embed the CA bundle into the binary.

Safe search can be extended to other platforms if necessary or useful,
by using `_NSGetExecutablePath()` (macOS),
`/proc/self/exe` (Linux/Cygwin), or `argv[0]`.

Closes #14582
2024-09-22 18:17:25 +02:00
..
cmdline-opts curl: add options for safe/no CA bundle search (Windows) 2024-09-22 18:17:25 +02:00
examples build: tidy up deprecation suppression, enable warnings for clang 2024-09-21 00:59:52 +02:00
internals internals/SPLAY.md: internal API documentation 2024-08-16 17:13:37 +02:00
libcurl tidy-up: spelling 2024-09-22 09:51:15 +02:00
.gitignore docs: add RELEASE-TOOLS.md.dist to .gitignore 2024-07-01 22:49:55 +02:00
BINDINGS.md BINDINGS: add zig binding 2024-08-07 14:51:09 +02:00
BUG-BOUNTY.md BUG-BOUNTY.md: clarify the third party situation 2024-05-14 16:23:42 +02:00
BUGS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CIPHERS-TLS12.md docs: update CIPHERS.md 2024-08-12 23:35:56 +02:00
CIPHERS.md docs: update CIPHERS.md 2024-08-12 23:35:56 +02:00
CMakeLists.txt cmake: more syntax tidy-up 2024-08-07 23:41:27 +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: misc language polish 2024-07-01 16:45:17 +02:00
CONTRIBUTE.md CONTRIBUTE: polished 2024-08-26 15:04:01 +02:00
curl-config.md curldown: make 'added-in:' a mandatory header field 2024-07-18 18:04:09 +02:00
CURL-DISABLE.md curl: add options for safe/no CA bundle search (Windows) 2024-09-22 18:17:25 +02:00
CURLDOWN.md curldown: fixups 2024-07-19 17:03:25 +02:00
DEPRECATE.md DEPRECATE.md: remove hyper after February 2025 2024-08-12 09:55:56 +02:00
DISTROS.md DISTROS: add AlmaLinux package source link 2024-07-11 12:52:58 -07:00
EARLY-RELEASE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
ECH.md doh: cleanups 2024-09-06 08:58:52 +02:00
EXPERIMENTAL.md vtls/rustls: support strong CSRNG data 2024-09-13 14:11:56 +02:00
FAQ tidy-up: OS names 2024-08-04 19:17:45 +02:00
FEATURES.md FEATURES.md: fix typo 2024-08-23 08:46:09 +02:00
GOVERNANCE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HELP-US.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HISTORY.md tidy-up: spelling quiche and Rustls 2024-08-20 00:44:10 +02:00
HTTP3.md HTTP3.md: cleanup markup and language 2024-08-28 13:56:40 +02:00
HTTP-COOKIES.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
INSTALL
INSTALL-CMAKE.md tidy-up: adjust casing of project names 2024-07-12 13:56:16 +02:00
INSTALL.md tidy-up: OS names 2024-08-04 19:17:45 +02:00
INTERNALS.md tidy-up: OS names 2024-08-04 19:17:45 +02:00
IPFS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
KNOWN_BUGS KNOWN_BUGS: cleanup 2024-09-04 23:48:23 +02:00
MAIL-ETIQUETTE.md docs/MAIL-ETIQUETTE: convert to markdown 2024-03-31 15:32:27 +02:00
Makefile.am internals/SPLAY.md: internal API documentation 2024-08-16 17:13:37 +02:00
MANUAL.md MANUAL.md: wrap two example urls that overrun styling 2024-07-10 23:39:39 +02:00
mk-ca-bundle.md curldown: make 'added-in:' a mandatory header field 2024-07-18 18:04:09 +02:00
options-in-versions curl: add --skip-existing 2024-08-04 23:28:09 +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: restore next release date 2024-07-24 09:10:53 +02:00
ROADMAP.md CI: add whitespace checker 2024-06-27 13:33:30 +02:00
RUSTLS.md vtls/rustls: support strong CSRNG data 2024-09-13 14:11:56 +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 reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SSL-PROBLEMS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SSLCERTS.md curl: add options for safe/no CA bundle search (Windows) 2024-09-22 18:17:25 +02:00
THANKS THANKS: contributors from the 8.10.1 release 2024-09-18 07:53:49 +02:00
THANKS-filter RELEASE-NOTES: synced 2024-09-21 17:57:39 +02:00
TheArtOfHttpScripting.md code: language cleanup in comments 2024-07-01 22:58:55 +02:00
TODO tidy-up: spelling 2024-09-22 09:51:15 +02:00
URL-SYNTAX.md tidy-up: misc spelling (bit, ASCII) 2024-08-15 15:30:09 +02:00
VERSIONS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
VULN-DISCLOSURE-POLICY.md VULN-DISCLOSURE-POLICY.md: small typo fix 2024-08-05 17:15:31 +02: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.