2010-12-07 73 views
3

我正在通过Boost.ASIO实现客户端SSL连接。根据我使用的参考书,我需要拨打SSL_get_verify_result以确保服务器证书一切正常。不幸的是,它需要一个指向SSL结构的指针,我不知道如何从ASIO中获得这个结果。如何从Boost.ASIO获取SSL *?

我试过在我的boost::asio::ssl::stream<boost::asio::ip::tcp::socket>对象上使用impl()函数,但编译器会抱怨它返回其他东西。

There 必须是一种获取该信息的方式。有人知道吗?

回答

3

问题已解决。它说impl()返回的结构是boost::asio::ssl::detail::openssl_stream_service::impl_struct*。我没有想到它会被记录下来,但我终于在绝望中找到了它,并发现了其他情况。更好的是,它包含一个指向我需要的SSL结构的指针,以及OpenSSL BIO结构和某种缓冲区。

0

ASIO有一个本地方法来执行此操作:在ssl上下文中调用set_verify_mode

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

+0

是的,上下文中的`impl()`方法返回一个`SSL_CTX *`。 ssl :: stream上的那个返回别的东西。 – 2010-12-07 15:00:47

+0

``set_verify_mode`只适用于非常基本的检查。安全性不足。 – 2010-12-07 15:01:35