gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:25:12 30 4
gpt4 key购买 nike

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

它给我这个错误:客户端抛出错误:无法将 XML 传输到服务器并取回 XML 响应。 libcurl 执行 HTTP POST 事务失败,解释:SSL 证书问题,验证 CA 证书是否正常。细节:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

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

谢谢

最佳答案

在 xmlrpc_c 库中使用复杂客户端模式并在 curl 传输中设置 no_ssl_verifyhost 和 no_ssl_verifypeer 选项为真:

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

关于c++ - 忽略 C++ 中自签名证书的 "Certificate Verification",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12283237/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com