提升:asio验证证书同步

时间:2015-12-14 12:49:42

标签: c++ ssl-certificate boost-asio

我想支持到服务器的同步和异步客户端连接(通过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;
  }

1 个答案:

答案 0 :(得分:1)

我想你想打电话给handshake()。它被记录为阻止调用,我认为它将同步调用您的认证验证功能。