cURL显示SSLv3而不是TLSv1

时间:2015-01-30 16:15:29

标签: c++ ssl curl

如果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"?

1 个答案:

答案 0 :(得分:2)

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

  

Curl的调试代码(-v)仅显示主版本号   (主要是为了区分SSLv2和SSLv3 +类型的消息,请参阅   ssl_tls_trace),   因此,当您使用TLS 1.0或更高版本时,它仍会显示“SSLv3”   (因为它们实际上是SSL v3.1或更高版本,3是相同的专业   版本号)。

如果您想确保使用正确的版本,则应该查看return value from 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