У меня возникла проблема с получением сертификата для работы с libcurl.Проверка подлинности сертификата CA с использованием libcurl
C++ код:
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
// const char* szURL = "https://www.google.se/";
const char* szURL = "https://api-sandbox.oanda.com/";
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, szURL);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_easy_setopt(curl, CURLOPT_CAINFO, "./ca.crt");
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
Файл ca.crt это поместили в той же папке, как мой пример программы, и файл выглядит следующим образом:
----- НАЧАТЬ CERTIFICATE-- --- /* МНОГО символов и цифр */ ----- END CERTIFICATE -----
содержимое этого файла я извлеченной, выполнив:
openssl s_client -connect api-sandbox.oanda.com:443 > logfile
Я тогда скопировал-вставлял ---- BEGIN CERTIFICATE ----- ..... ---- END CERTIFICATE ----- часть в пустой файл и сохранила его как ca. элт.
Программа печатает:
curl_easy_perform() failed: Peer certificate cannot be authenticated with given CA certificates
Я использую MinGW 64-бит (г ++ компилятор) на Windows 8. Что мне не хватает?
Я был в состоянии сделать запрос к https://www.google.se/, используя ca-bundle, который был сгенерирован VB-скриптом, который поставляется с пакетом разработки libcurl. По-видимому, это скрипт, который
Скрипт для извлечения certdata.txt с сайта Mozilla.org и создать «* CA-bundle.crt для использования с OpenSSL/Libcurl/Libcurl привязок
Спасибо за любые указатели ,