apache — игнорировать & quot; подтверждение сертификата & quot; для самозаверяющего сертификата в Stack Overflow

Я запускаю CGI-скрипт на C ++ с использованием библиотеки xml-rpc. Код сервера находится в каталоге / var / www / cgi-bin / для запуска Apache. Apache также настроен, чтобы разрешить запуск CGI. Теперь проблема в том, что, поскольку Apache в моей системе имеет самозаверяющий сертификат, когда я запускаю клиент для доступа к этому адресу:
«Https: // локальный / CGI-BIN / xmlrpcserver»

Это дает мне эту ошибку:
Ошибка клиента: невозможно передать XML на сервер и получить ответ XML. libcurl не удалось выполнить транзакцию HTTP POST, объяснив: проблема с сертификатом SSL, проверьте, что сертификат CA в порядке. Подробности:
ошибка: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата

В настоящее время, как я могу обойти проверку проверки сертификата для запуска и тестирования моего приложения. Я хочу SSL-соединение (чтобы зашифровать всю связь), в то время как я хочу игнорировать проверку сертификата и использовать текущий сертификат самоподписания.

Спасибо

1

Решение

Используйте шаблон сложного клиента в библиотеке xmlrpc_c и задайте параметры no_ssl_verifyhost и no_ssl_verifypeer в транспорте curl true:

#include <string>
#include <iostream>
#include <xmlrpc-c/client.hpp>

int main()
{
std::string const serverUrl("https://localhost/cgi-bin/xmlrpcserver");
std::string const methodName("sample.add");

xmlrpc_c::clientXmlTransport_curl myTransport
(xmlrpc_c::clientXmlTransport_curl::constrOpt()
.no_ssl_verifyhost(true)
.no_ssl_verifypeer(true)
);
xmlrpc_c::client_xml myClient(&myTransport);

xmlrpc_c::paramList sampleAddParms;
sampleAddParms.add(xmlrpc_c::value_int(5));
sampleAddParms.add(xmlrpc_c::value_int(7));

xmlrpc_c::rpcPtr myRpcP(methodName, sampleAddParms);

xmlrpc_c::carriageParm_curl0 myCarriageParm(serverUrl);
myRpcP->call(&myClient, &myCarriageParm);

int const sum((xmlrpc_c::value_int(myRpcP->getResult())));
std::cout << sum << std::endl;
}
2

Другие решения

Других решений пока нет …