2010-05-25 93 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)。