CURLOPT_SSLVERSION(3)
π NAME π
CURLOPT_SSLVERSION β preferred TLS/SSL version. This is the Library Functions Manual page for CURLOPT_SSLVERSION, bestie, and yes it's iconic. π
β¨ SYNOPSIS β¨
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);
π¦ DESCRIPTION π¦
Okay so bestie, you pass a long as the parameter to control which version range of SSL/TLS versions to use. No cap.
The SSL and TLS versions have typically developed from the most insecure version to be more and more secure in this order through history: SSL v2, SSLv3, TLS v1.0, TLS v1.1, TLS v1.2 and the most recent TLS v1.3. Literally a security glow-up timeline. β¨
Use one of the available defines for this purpose. The available options are:
CURL_SSLVERSION_DEFAULTβ the default acceptable version range. The minimum acceptable version is by default TLS v1.2 since 8.16.0 (unless the TLS library has a stricter rule).CURL_SSLVERSION_TLSv1β TLS v1.0 or laterCURL_SSLVERSION_SSLv2β SSL v2 - refusedCURL_SSLVERSION_SSLv3β SSL v3 - refusedCURL_SSLVERSION_TLSv1_0β TLS v1.0 or laterCURL_SSLVERSION_TLSv1_1β TLS v1.1 or laterCURL_SSLVERSION_TLSv1_2β TLS v1.2 or laterCURL_SSLVERSION_TLSv1_3β TLS v1.3 or later
The maximum TLS version can be set by using one of the CURL_SSLVERSION_MAX_ macros below. It is also possible to OR one of the CURL_SSLVERSION_ macros with one of the CURL_SSLVERSION_MAX_ macros.
CURL_SSLVERSION_MAX_DEFAULTβ The flag defines the maximum supported TLS version by libcurl, or the default value from the SSL library is used. libcurl uses a sensible default maximum, which was TLS v1.2 up to before 7.61.0 and is TLS v1.3 since then - assuming the TLS library support it.CURL_SSLVERSION_MAX_TLSv1_0β The flag defines maximum supported TLS version as TLS v1.0.CURL_SSLVERSION_MAX_TLSv1_1β The flag defines maximum supported TLS version as TLS v1.1.CURL_SSLVERSION_MAX_TLSv1_2β The flag defines maximum supported TLS version as TLS v1.2.CURL_SSLVERSION_MAX_TLSv1_3β The flag defines maximum supported TLS version as TLS v1.3.
π DEFAULT π
CURL_SSLVERSION_DEFAULT
π PROTOCOLS π
This functionality affects all TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
All TLS backends support this option. Periodt. π
π EXAMPLE π
int main(void)
{
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
/* ask libcurl to use TLS version 1.0 or later */
curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
/* Perform the request */
curl_easy_perform(curl);
}
}
π§ HISTORY π§
- SSLv2 is disabled by default since 7.18.1. Other SSL versions availability may vary depending on which backend libcurl has been built to use.
- SSLv3 is disabled by default since 7.39.0.
- SSLv2 and SSLv3 are refused completely since curl 7.77.0
- Since 8.10.0 wolfSSL is fully supported. Before 8.10.0 the MAX macros were not supported with wolfSSL and the other macros did not set a minimum, but restricted the TLS version to only the specified one.
- Rustls support added in 8.10.0.
CURL_SSLVERSION_*macros becamelongtypes in 8.16.0, prior to this version alongcast was necessary when passed tocurl_easy_setopt(3).
π AVAILABILITY π
Added in curl 7.1
π RETURN VALUE π
curl_easy_setopt(3) returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors(3).
π«Ά SEE ALSO π«Ά
This iconic manual page comes from libcurl, dated 2026-10-12. Stay secure and slay, bestie ππ«Ά
π¦ where this page comes from
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms