cURL 显示 SSLv3 而不是 TLSv1

cURL displays SSLv3 instead of TLSv1

本文关键字:TLSv1 显示 SSLv3 cURL      更新时间:2023-10-16

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

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"可以吗?

我将引用我自己的答案(针对另一个问题):

Curl的调试代码(-v)仅显示主版本号 (主要区分SSLv2和SSLv3+类型的消息,参见 ssl_tls_trace ), 所以当你使用TLS 1.0或更高版本时,它仍然会显示"SSLv3" (因为它们实际上是 SSL v3.1 或更高版本,所以 3 是相同的主要 版本号)。

如果要确保使用正确的版本,则可能应该检查setopt的返回值。

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

== 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