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请求中发送客户端证书时遇到问题,我遗漏了什么?
基础教程推荐
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 设计字符串本地化的最佳方法 2022-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01