忽略C++中自签名证书的"Certificate Verification"

Ignore "Certificate Verification" for self-signed certificate in C++

本文关键字:Certificate Verification 证书 C++ 忽略      更新时间:2023-10-16

我正在使用xml-rpc库在C++中运行CGI脚本。服务器代码位于要由Apache运行的/var/www/cgi-bin/目录中。Apache还被配置为允许运行cgi的权限。现在的问题是,由于我的系统上的Apache有一个自签名证书,当我运行客户端访问此地址时:"https://localhost/cgi-bin/xmlrpcserver"

它给了我一个错误:客户端引发错误:无法将XML传输到服务器并获取XML响应。libcurl无法执行HTTPPOST事务,解释为:SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

目前,我如何绕过检查证书验证来运行和测试我的应用程序。我想要SSL连接(加密整个通信),而我想要忽略证书验证并使用当前的自签名证书。

感谢

在xmlrpc_c库中使用复杂客户端模式,并在curl transport true:中设置no_ssl_verifyhost和no_ssl-verifyyper选项

#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;
}