Boost:asio验证证书同步

Boost:asio Verify Certificate synchronous

本文关键字:证书 同步 验证 asio Boost      更新时间:2023-10-16

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

我想您想调用handshake()。它被记录为一个阻塞调用,我认为它将同步调用您的证书验证函数。