Ошибка libcurl: «Одноранговый сертификат не может быть аутентифицирован с данными сертификатами CA» - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь подключиться к серверу FreeBSD с Ma c OS X (High Sierra) через HTTPS. Мы используем самозаверяющий сертификат. Я загружаю сертификат с помощью команды

/usr/bin/openssl s_client -tls1_2 -connect 192.168.5.140:443

Код, который я использую для подключения:

curl_easy_setopt(curl, CURLOPT_URL, Serveraddress);

curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 60);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request);

curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1L);

curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
curl_easy_setopt(curl,CURLOPT_CAINFO, <CertificatePath>);

Тот же код работает на другом компьютере (OS X Yosemite). Единственное отличие, которое я могу найти, это то, что при загрузке сертификата с помощью вышеупомянутой команды я получаю следующие сообщения:

На машине, где работает код:

 No client certificate CA names sent
 Peer signing digest: SHA512
 Server Temp Key: DH, 2048 bits

В машина, на которой не работает код:

No client certificate CA names sent

Как решить эту проблему? Я попытался указать для Verify-Peer и Verify-Host значение 0, это не сработало.

Я попробовал описанное решение Здесь . Это не сработало.

Оцените помощь.

...