如何从Boost.ASIO获取SSL*?(SSL*是一种安全套接字层)

3
我正在使用Boost.ASIO实现客户端SSL连接。根据我所使用的参考书,我需要调用SSL_get_verify_result来确保服务器证书的一切正常。不幸的是,它需要一个指向SSL结构体的指针,而我不知道如何从ASIO中获取它。
我尝试在我的boost::asio::ssl::stream<boost::asio::ip::tcp::socket>对象上使用impl()函数,但编译器抱怨它返回了其他内容。
必须有方法可以获得这些信息。有人知道吗?
2个回答

3
问题已解决。它所说的impl()返回的结构是boost::asio::ssl::detail::openssl_stream_service::impl_struct*。我没有指望它有文档记录,但最终在绝望中搜索到了它并发现了不同之处。更好的是,它包含了我需要的SSL结构体的指针,以及OpenSSL BIO结构体和某种缓冲区。

impl_struct 在这里被定义:/usr/include/boost/asio/ssl/detail/openssl_stream_service.hpp - Gearoid Murphy

0

ASIO有一个本地方法可以实现这个功能:在SSL上下文中调用set_verify_mode

impl()方法返回一个SSL_CTX*,但您不应该依赖它。


是的,上下文中的 impl() 方法返回一个 SSL_CTX*。ssl::stream 中的方法则返回其他东西。 - Head Geek
而且 set_verify_mode 只适用于非常基本的检查。它不足以确保安全。 - Head Geek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接