为libcurl添加自签名SSL证书

Mar*_*ter 10 c ssl self-signed libcurl

我在我的C应用程序中使用libcurl与我设置的HTTPS服务器进行通信.我在该服务器上生成了一个我希望与curl一起使用的自签名证书.

我知道将CURLOPT_SSL_VERIFYPEER设置为0以绕过SSL验证,但我希望将生成的证书添加到curl的"有效"CA证书中.

我已尝试将CURLOPT_CAPATH和CURLOPT_SSLCERT设置为服务器SSL公钥的位置,但无法通过验证.

如何添加自己的CA /自签名证书,以便libcurl成功验证它?

Ran*_*ica 4

要添加自签名证书,请使用CURLOPT_CAINFO

要检索站点的 SSL 公共证书,请使用

openssl s_client -connect www.site.com:443 | tee logfile
Run Code Online (Sandbox Code Playgroud)

证书是由----BEGIN CERTIFICATE----和标记的部分
---END CERTIFICATE----

将该证书保存到文件中,并以如下方式使用curl:

CURL* c = curl_easy_init();
curl_easy_setopt(c, CURLOPT_URL, "https://www.site.com");
curl_easy_setopt(c, CURLOPT_CAINFO, "/path/to/the/certificate.crt");
curl_easy_setopt(c, CURLOPT_SSL_VERIFYPEER, 1);
curl_easy_perform(c);
curl_easy_cleanup(c);
Run Code Online (Sandbox Code Playgroud)