I am trying to use cURL to post to an API that just started using SNI (so they could host multiple ssl certs on 1 IP address).
My cURL stopped working as a result o
To be able to use SNI, three conditions are required:
Note that Curl's debug code (-v
) only displays the major version number (mainly to distinguish between SSLv2 and SSLv3+ types of messages, see ssl_tls_trace), so it will still display "SSLv3" when you use TLS 1.0 or above (because they're effectively SSL v3.1 or above, 3 is the same major version number).
You could check that your installed version of curl can use SNI using Wireshark. If you make a connection using curl -1 https://something
, if you expand the "Client Hello" message, you should be able to see a "server_name
" extension.
I'm not sure which SSL/TLS version is used by default (depending on your compilation options) when you use curl
without -1
(for TLS 1.0) or -3
(for SSLv3), but you can try to force -1
on your command, since it won't work with SSLv3 anyway.
Along with the required library and Curl version, the request should use resolve to send SNI in the curl:
curl -vik --resolve example.com:443:198.18.110.10 https://example.com/