【问题标题】:Trouble making a HTTPS request with Libcurl in Visual Studio在 Visual Studio 中使用 Libcurl 发出 HTTPS 请求时遇到问题
【发布时间】:2012-09-09 15:46:08
【问题描述】:

我有一个托管在 Azure 上的 Web 服务,它通过自签名证书在 SSL 下得到保护。

我正在尝试使用以下代码连接到它

CURL *curl;
CURLcode res;

curl = curl_easy_init();

curl_easy_setopt(curl, CURLOPT_URL, "https://XXXXXXXX.cloudapp.net/XXXXXX.svc/getFilms");
curl_easy_setopt(curl, CURLOPT_CAPATH, "C:\\Users\\Jordan\\Desktop\\Jordan-8.pem");
curl_easy_setopt(curl, CURLOPT_CAINFO, "C:\\Users\\Jordan\\Desktop\\Jordan-8.pem");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

curl_easy_perform(curl);

然后我收到以下错误

* Connected to XXXXXXXXX.cloudapp.net
* successfully set certificate verify locations:
* CAfile: C:\Users\Jordan\Desktop\Jordan-8.pem
CApath: C:\Users\Jordan\Desktop\Jordan-8.pem
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Closing connection #0
* Peer certificate cannot be authenticated with known CA certificates

我做错了什么吗?我在网上研究了很长时间,但一无所获。

【问题讨论】:

    标签: c++ ssl curl openssl libcurl


    【解决方案1】:

    发生这种情况通常是因为 libcurl 使用的 SSL 证书已过时。我建议切换到cert bundle here 看看你是否有更好的运气。

    【讨论】:

    • 感谢您的建议,尽管问题似乎在于我的自签名证书名称与我的 Azure 服务的 URL 不匹配。
    • @Jordan 我会看一下证书包中包含的脚本。它应该可以帮助您更接近添加自签名证书。
    • 是的,错误是我最初创建的证书的 CN 与服务的 CN 不同。我创建了一个具有正确名称的新证书,然后将其提取为 pem 格式,并将该文件的路径传递给 curl 中的 CAINFO。
    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 2014-04-15
    • 2019-05-08
    • 2015-09-16
    • 2014-11-02
    • 2011-05-13
    • 2023-02-13
    • 1970-01-01
    相关资源
    最近更新 更多