Having trouble sending client certificate in libcurl ssl request, what am I missing?(在libcurl SSL请求中发送客户端证书时遇到问题,我遗漏了什么?)
问题描述
我正在尝试将客户端证书发送到需要该证书的Web服务器。
如果我从命令行cURL命令发出请求,它就会工作。 我传递了--key文件名和--cert文件名,一切正常。
当我在libcurl库中执行此操作时,我执行以下操作:
curl_easy_setopt(curl, CURLOPT_SSLCERT, client_cert_file.c_str());
curl_easy_setopt(curl, CURLOPT_SSLKEY, client_key_file.c_str());
相同的是,服务器说缺少客户端证书。
我尝试过这样做,比如给它一个不存在的文件名,希望引起其他一些错误消息,这些消息可能会让我知道出了什么问题,但是当出现错误时,启用Verbose的libcurl(以及命令行cURL)不会产生任何错误消息。当然有失败的案例,但没有任何东西会让我犯任何可以跟进的错误。有没有办法从libcurl中获取更多诊断信息?
把我头发上剩下的东西拉出来。
这是在Windows10上,顺便说一句,我们自己构建了libcurl。SSL是内置的,HTTPS连接可以工作,我就是无法让它发送客户端证书,也没有任何迹象表明出了什么问题。
更新:
我想我找到了我的问题...
https://curl.haxx.se/docs/todo.html#Add_support_for_client_certifica
有人知道如何使用它吗?
推荐答案
好的,我想出了一些办法。
事实证明,您可以使用openssh或sChannel在Windows上构建libcurl。 如果使用SCANNEL,则CURLOPT_SSLCERT和CURLOPT_SSLKEY不执行任何操作。(请注意,没有警告或错误。) 也许他们确实做了一些与SChannel有关的事情,但我找不到任何关于这方面的文档。简而言之,如果您使用OpenSSL构建libcurl,您可以提供一个客户端证书来发送TLS握手。
小费在这里:
https://curl.haxx.se/docs/todo.html#Add_support_for_client_certifica
这篇关于在libcurl SSL请求中发送客户端证书时遇到问题,我遗漏了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在libcurl SSL请求中发送客户端证书时遇到问题,我遗漏了什么?
- GDB 不显示函数名 2022-01-01
- 将函数的返回值分配给引用 C++? 2022-01-01
- 使用 __stdcall & 调用 DLLVS2013 中的 GetProcAddress() 2021-01-01
- 如何提取 __VA_ARGS__? 2022-01-01
- XML Schema 到 C++ 类 2022-01-01
- 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值 2021-01-01
- 将 hdc 内容复制到位图 2022-09-04
- OpenGL 对象的 RAII 包装器 2021-01-01
- 哪个更快:if (bool) 或 if(int)? 2022-01-01
- DoEvents 等效于 C++? 2021-01-01