2010-05-25 15 views
6

Ich habe festgestellt, dass es wirklich sehr wenig Informationen zu diesem Thema gibt. Ich habe bereits eine DLL, die erfolgreich Beiträge mit libcurl macht.Verwendung von libcurl & SSL

Ich habe libcurl mit openssl für SSL-Funktionalität kompiliert.

Hier ist ein Ausdruck meiner ursprünglichen Curl-Setup.

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); 

Meine Frage an diejenigen, die diese vorher getan haben, ist es so einfach wie nur über diese Zeilen hinzufügen SSL Arbeit zu bekommen (solange das Zertifikat vorhanden ist)? Oder ist es komplizierter?

Das lustige ist, ich bin mir nicht ganz sicher, wie SSL funktioniert. Ich habe noch nie damit gearbeitet. Muss ich einen Schlüssel in meiner Anwendung speichern und bei jeder Anfrage senden? Jedenfalls war meine Hauptfrage die erste. Vielen Dank im Voraus.

+1

bezogen: http://StackOverflow.com/Questions/197444/building-libcurl-with-ssl-Support-on-Windows –

Antwort

2

Ja, es ist so einfach. Stellen Sie nur sicher, dass die Datei "ca.cert", die Sie haben, ein echtes CA-Zertifikat ist, das das Zertifikat Ihres Servers verifizieren kann.

+0

Woher bekommen Sie diese 'ca.cert' Datei? Denn unter Windows, thx to chrome -> Entwickleroptionen -> security kann ich nur '.cer' Dateien (ohne 't') exportieren –

+0

Wenn Sie denselben CAs vertrauen möchten, denen Firefox vertraut, können Sie solche erhalten ein CA-Cert-Bundle von [hier] (https://curl.haxx.se/docs/caextract.html) –

0

Alles, was Sie tun müssen, um SSL mit libcurl zu verwenden, geben Sie eine https URL anstelle einer http URL. Die einzige Option, die Sie mit curl_easy_setopt setzen müssen, ist CURLOPT_URL, obwohl nur die empfangenen Daten in stdout gedruckt werden, wenn Sie keinen Schreib-Callback angeben.

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

Das könnte nicht falscher sein. –

0

Stellen Sie sicher, dass, wenn CURLOPT_SSL_VERIFYHOST verwenden Sie den tatsächlichen Wert auf 2L gesetzt statt 1 (das ist die Standardeinstellung) (wie als Kommentar in diesem Beispiel), wenn Sie wirklich die Host-Namen Spiele überprüfen möchten, andernfalls würde nur nach dem Vorhandensein eines "Common name" (CN) im Zertifikat gesucht.