c++ - 我不确定在使用 Curl 时如何查看 TLS session 详细信息

标签 c++ ssl curl

我不完全确定我是否正确使用了 Curl,因为这是我第一次使用它,但我需要能够读取我和我连接的任何服务器之间的 TLS session 的详细信息。

我的问题是我用过 “curl_easy_getinfo(curl,CURLINFO_TLS_SESSION,&tls)”

其中 tls 是一个 curl_tlssessioninfo 结构。但实际上我对它的结构一无所知,也找不到任何指出它的地方,因此无法显示我刚刚阅读的信息。

当然,我可能会以完全错误的方式解决这个问题,但我已经仔细研究了 Curl 的手册很长一段时间了。 我使用的语言是 C++,我在 Ubuntu 环境中,任何帮助将不胜感激。

最佳答案

LibCURL 支持多种不同的 SSL 实现(后端),并且从 CURLINFO_TLS_SESSION(以及新变体 CURLINFO_TLS_SSL_PTR)返回的信息也依赖于实现。

作为documentation解释,返回一个指向curl_tlssessioninfo结构的指针,定义为:

struct curl_tlssessioninfo {
  curl_sslbackend backend;
  void *internals;
};

这里的 backend 是一个枚举,指定存储在 internals 中的 SSL 上下文信息的实际类型:

  • CURLSSLBACKEND_OPENSSL:SSL_CTX*(或SSL*)(docs)

  • CURLSSLBACKEND_GNUTLS:gnutls_session_t ( docs )

  • CURLSSLBACKEND_SCHANNEL:CtxtHandle*(Windows docs)

  • CURLSSLBACKEND_DARWINSSL:SSLContext*(Apple docs)

  • CURLSSLBACKEND_AXTLS:SSL*

  • CURLSSLBACKEND_MBEDTLS:mbedtls_ssl_context*

  • CURLSSLBACKEND_NSS:PRFileDesc*

  • 等等

当你为你的项目构建 libcurl 时,你指定了要使用的 SSL 后端,所以你应该知道你使用的是哪个 SSL 后端,将 internals 指针转换为正确的类型并使用该后端的相应 header 和 API,以进一步提取必要的信息。

关于c++ - 我不确定在使用 Curl 时如何查看 TLS session 详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46463580/

相关文章:

php - HBitmap字节数组到php

c++ - C/C++ 是否有使用相对路径的跨平台方式?

spring - 无法为数据库添加 SSL 支持

java - 如何使用 TLS 和 JMXMP 使用自定义 JMX 服务器对用户和密码进行身份验证

ssl - 一个 Azure 部署中的多个 SSL 证书

ssl - OPENSSL s_cient 请求失败(408 请求超时)

php - Curl 输入 php 和 IP 地址

c++ - 内联成员运算符与内联运算符 C++

c++ - 如何使用迭代器初始化映射的关键字段?

curl - 如何使用带有 curl 的 GitHub API v3 创建和发布版本?