我想支持到服务器的同步和异步客户端连接(通过TLS)。异步客户端是微不足道的,因为它在asio的例子中显示。但是如何以同步方式使用TLS连接到服务器呢?我最关心的是如何检查服务器证书。因为异步它是这样完成的:
asio::ssl::context ctx(asio::ssl::context::tlsv11);
ctx.set_default_verify_paths();
mSocket(mIoService, ctx);
mSocket.set_verify_mode(asio::ssl::verify_fail_if_no_peer_cert);
mSocket.set_verify_callback(
std::bind(&Client::verifyCertificate, this,
std::placeholders::_1,
std::placeholders::_2));
但我如何检查同一个同步? 注意:目前我正在使用asio的独立版。这应该与boost:asio。
相同编辑:验证方法如下所示
bool Client::verifyCertificate(bool preverified,
asio::ssl::verify_context& ctx)
{
//just cout the name
char subject_name[256];
X509* cert = X509_STORE_CTX_get_current_cert(ctx.native_handle());
X509_NAME_oneline(X509_get_subject_name(cert), subject_name, 256);
std::cout << "Verifying " << subject_name << "\n";
return preverified;
}