gpt4 book ai didi

c++ - libcurl:一段时间后,curl_easy_perform 失败并显示 CURLE_SSL_CACERT_BADFILE

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:33 25 4
gpt4 key购买 nike

我在我的 C++ 应用程序中使用 libcurl 7.26.0 通过 https 协议(protocol)与服务器通信。它工作正常,但在大约 20 分钟后连接失败:curl_easy_perform 返回 CURLE_SSL_CACERT_BADFILE。我制作 session 的 curl_easy_cleanup 然后以相同的方式成功初始化它,但在 curl_easy_perform 上它失败并出现相同的错误。只有重新启动应用程序有帮助。我检查过文件系统中是否存在 *.pem 文件,并且应用程序的访问权限在其运行期间未更改。

我使用的是 libcurl 7.26.0、Windows 7 x86、MSVC 2005。

我们将不胜感激任何帮助。

UPD:问题仅在 Release模式下重现。

最佳答案

if (curl)
{
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_easy_setopt(curl, CURLOPT_CAINFO, certificate_file_path);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curlErrorBuffer);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "https://ap....");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");

struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, ss.str().c_str());

...
}

我尝试了以下方法:

curl-ca-bundle.crt
curl-ca-bundle-my-site.crt
curl-ca-bundle.pem
curl-ca-bundle-my-site.pem

ca-mysite.crt
ca-mysite.pem

但是:CURLE_SSL_CACERT_BADFILE...

路径:/Users/user/Documents/Test测试/CA/ca-any-version.pem/crt

关于c++ - libcurl:一段时间后,curl_easy_perform 失败并显示 CURLE_SSL_CACERT_BADFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12387710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com