2010-05-25 64 views
6

我发现这方面的信息真的很少。我已经有一个DLL使用libcurl成功发布帖子。使用libcurl和SSL

我已经用openssl编译了libcurl的ssl功能。

这是我的原始卷曲设置的一个exert。

curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errorBuffer); 

    //curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER , 1); 
    //curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST , 1); 
    //curl_easy_setopt(curl, CURLOPT_CAINFO , "./ca.cert"); 

    curl_easy_setopt(handle, CURLOPT_POSTFIELDS, cParam); 
    curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, strlen(cParam)); 
    curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1); 
    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, Request::writer); 
    curl_easy_setopt(handle, CURLOPT_WRITEDATA, &buffer); 
    curl_easy_setopt(handle, CURLOPT_URL, cURL); 

我的问题给那些谁之前已经这样做了,它是那么容易,因为只是增加高于线得到SSL工作(只要证书存在)?还是更复杂?

有趣的是我并不完全确定SSL是如何工作的。我从来没有用过它。我是否需要将密钥存储在我的应用程序中并随每个请求一起发送?无论如何,我的主要问题是第一个问题。先谢谢你。

+1

相关:http://stackoverflow.com/questions/197444/building-libcurl-with-ssl-support-on-windows – 2010-08-23 00:36:10

回答

2

是的,就是这么简单。只要确保您拥有的“ca.cert”文件是可以验证您的服务器证书的真实CA证书。

+0

你从哪里得到这个'ca.cert'文件?因为在windows下,thx到chrome - > developer options - > security我只能导出'.cer'(没有't')文件 – 2017-04-28 12:21:39

+0

如果你想要信任Firefox所信任的相同CA,你可以得到一个来自[这里]的https证书包(https://curl.haxx.se/docs/caextract.html) – 2017-04-28 20:43:18

0

所有你需要做的与libcurl一起使用SSL是给一个https url而不是一个http url。您需要使用curl_easy_setopt设置的唯一选项是CURLOPT_URL,但如果您未指定写回调,它只会将接收到的数据打印到stdout。

CURL *handle = curl_easy_init(); 
char url[] = "https://google.com"; 
curl_easy_setopt(handle, CURLOPT_URL, url); 
curl_easy_perform(handle); 
+1

这不会更不正确。 – 2017-01-07 04:06:43

0

确保使用CURLOPT_SSL_VERIFYHOST当您设置的实际值2L(这是默认值),而不是1(如图所示为在例如评论),如果你真的要检查的主机名匹配,否则它只会检查证书中是否存在“公用名称”(CN)。