握手失败:证书验证失败(Boost ASIO)
Handshake failed: certificate verify failed (Boost ASIO)
您好,我正在尝试连接到服务器:
argv[1] = "demo.demo.com"; // or httpbin.com
argv[2] = "39473"; // or 80
使用类似的代码:
http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/ssl/client.cpp
我遇到的问题是:
Handshake failed: certificate verify failed
我试过这个:
boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23);
ctx.set_verify_mode(boost::asio::ssl::verify_none);
//ctx.set_default_verify_paths();
有没有办法只连接而不验证证书。
您可以添加一个验证回调 returns true:
socket_.set_verify_callback(
boost::bind(&client::verify_certificate, this, _1, _2));
在哪里
bool verify_certificate(bool preverified,
boost::asio::ssl::verify_context& ctx)
{
return true;
}
所以错误表明返回的证书与加载的证书不匹配。在示例代码中,加载的证书出现在这里:
ctx.load_verify_file("ca.pem");
作为测试,您可以尝试以下操作。在 CMD shell 中发出此命令(我假设您已安装 openssl):
openssl s_client -connect demo.demo.com:39473 -showcerts
检查返回的输出,并将其与您的 ca.pem 文件进行比较。我敢打赌他们是不同的。您甚至可以尝试用从 opensll 返回的文本替换 ca.pem 文件的内容,希望它能起作用。
您的里程可能会有所不同。
您好,我正在尝试连接到服务器:
argv[1] = "demo.demo.com"; // or httpbin.com
argv[2] = "39473"; // or 80
使用类似的代码:
http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/ssl/client.cpp
我遇到的问题是:
Handshake failed: certificate verify failed
我试过这个:
boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23);
ctx.set_verify_mode(boost::asio::ssl::verify_none);
//ctx.set_default_verify_paths();
有没有办法只连接而不验证证书。
您可以添加一个验证回调 returns true:
socket_.set_verify_callback(
boost::bind(&client::verify_certificate, this, _1, _2));
在哪里
bool verify_certificate(bool preverified,
boost::asio::ssl::verify_context& ctx)
{
return true;
}
所以错误表明返回的证书与加载的证书不匹配。在示例代码中,加载的证书出现在这里:
ctx.load_verify_file("ca.pem");
作为测试,您可以尝试以下操作。在 CMD shell 中发出此命令(我假设您已安装 openssl):
openssl s_client -connect demo.demo.com:39473 -showcerts
检查返回的输出,并将其与您的 ca.pem 文件进行比较。我敢打赌他们是不同的。您甚至可以尝试用从 opensll 返回的文本替换 ca.pem 文件的内容,希望它能起作用。
您的里程可能会有所不同。