GNURLOPT_PROXY_SSL_VERIFYHOST(3)
π GNURLOPT_PROXY_SSL_VERIFYHOST(3) π
okay so this page lives in the curl_easy_setopt options manual, and it's all about making sure your HTTPS proxy is actually your proxy and not some random certificate in a trench coat. The title vibe is GNURLOPT_PROXY_SSL_VERIFYHOST(3) β full name on the heading, abbreviated little gremlin in the footer, we'll get there. π
πΈ NAME πΈ
CURLOPT_PROXY_SSL_VERIFYHOST β verify the proxy certificate's name against host. That's the name, bestie: it checks the proxy cert's name against the host. Slay? It's giving safety feature.
β¨ SYNOPSIS β¨
#include <gnurl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST,
long verify);
π¦ DESCRIPTION π¦
You pass a long set to 2L, and that's you asking curl to verify the HTTPS proxy's certificate name fields against the proxy name. Yes, 2L, not vibes. β¨
This option determines whether libcurl verifies that the proxy cert contains the correct name for the name it is known as.
When CURLOPT_PROXY_SSL_VERIFYHOST(3) is 2, the proxy certificate must indicate that the server is the proxy to which you meant to connect to, or the connection fails. no cap: if it doesn't match up, the connection is not happening.
Curl considers the proxy the intended one when the Common Name field or a Subject Alternate Name field in the certificate matches the host name in the proxy string which you told curl to use. That's the match-up, that's the moment. π«Ά
If verify value is set to 1, here's the timeline tea:
- In
7.28.0and earlier: treated as a debug option of some sorts, not supported anymore due to frequently leading to programmer mistakes. - From
7.28.1to7.65.3: setting it to1madecurl_easy_setopt()return an error and leaving the flag untouched. - From
7.66.0: treats1and2the same.
When the verify value is 0L, the connection succeeds regardless of the names used in the certificate. Use that ability with caution!
π¨ caution alert: 0L means the name check is off β the original page literally says "Use that ability with caution!" so I'm passing that warning straight to you, bestie.
See also CURLOPT_PROXY_SSL_VERIFYPEER(3) to verify the digital signature of the proxy certificate. If libcurl is built against NSS and CURLOPT_PROXY_SSL_VERIFYPEER(3) is zero, CURLOPT_PROXY_SSL_VERIFYHOST(3) is also set to zero and cannot be overridden.
π DEFAULT π
2
That's the default. No notes, it's just 2. π
π PROTOCOLS π
All protocols when used over an HTTPS proxy. Periodt.
π₯ EXAMPLE π₯
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
/* Set the default value: strict name check please */
curl_easy_setopt(curl, CURLOPT_PROXY_SSL_VERIFYHOST, 2L);
curl_easy_perform(curl);
}
β AVAILABILITY β
Added in 7.52.0.
If built TLS enabled. (Yes, that's the phrasing from the page, we keep it exactly. π)
π§ RETURN VALUE π§
Returns CURLE_OK if TLS is supported, and CURLE_UNKNOWN_OPTION if not.
If 1 is set as argument, CURLE_BAD_FUNCTION_ARGUMENT is returned.
π SEE ALSO π
CURLOPT_PROXY_SSL_VERIFYPEER(3)CURLOPT_PROXY_CAINFO(3)CURLOPT_SSL_VERIFYPEER(3)CURLOPT_CAINFO(3),
mwah π okay that's the page: source/version libcurl 7.52.0, date 16 Nov 2016, and the footer line says GNURLOPT_P..._VERIFYHOST(3). She's iconic, she's verifying proxy names, she's done. π
π¦ where this page comes from
- nixos 26.05: libgnurl 7.72.0
- nixpkgs unstable: libgnurl 7.72.0
- Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms