cURL 显示 SSLv3 而不是 TLSv1

cURL displays SSLv3 instead of TLSv1

如果 curl_easy_setopt 函数禁用了 SSL,为什么 cURL 7.19 在握手期间显示 SSLv3?

curl_easy_setopt(m_curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);

cURL 输出:

CURL Info: SSLv3, TLS handshake, Client hello (1):
CURL Info: SSLv3, TLS handshake, Server hello (2):
CURL Info: SSLv3, TLS handshake, CERT (11):
CURL Info: SSLv3, TLS handshake, Server finished (14):
CURL Info: SSLv3, TLS handshake, Client key exchange (16):
CURL Info: SSLv3, TLS change cipher, Client hello (1):
CURL Info: SSLv3, TLS handshake, Finished (20):
CURL Info: SSLv3, TLS handshake, Unknown (4):
CURL Info: SSLv3, TLS change cipher, Client hello (1):
CURL Info: SSLv3, TLS handshake, Finished (20):
CURL Info: SSL connection using DES-CBC3-SHA

cURL 显示 "SSLv3" 可以吗?

我将引用 my own answer(针对不同的问题):

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).

如果您想确保使用的是正确的版本,您可能应该检查 return value from setopt

此外,您可以使用跟踪选项来详细查看握手:

== Info: SSLv3, TLS handshake, Client hello (1):
=> Send SSL data, 512 bytes (0x200)
0000: 01 00 01 fc 03 03

第 5 个字节将是主修订号(此处为 03),第 6 个字节将是次要修订号。

  • (03, 00) 是 SSLv3
  • (03, 01) 是 TLSv1.0
  • (03, 02) 是 TLSv1.1
  • (03, 03) 是 TLSv1.2