c++ - 从 SSL_CTX 创建 boost asio ssl 上下文

标签 c++ ssl openssl boost-asio

是否可以创建 boost::asio::ssl::context来自现有的 SSL_CTX ?
我想避免将所有选项从一个复制到另一个(从而冒着错误的风险)。

最佳答案

前两个构造函数I see are

/// Constructor.
BOOST_ASIO_DECL explicit context(method m);

/// Construct to take ownership of a native handle.
BOOST_ASIO_DECL explicit context(native_handle_type native_handle);
所以第二个在逻辑上就是你所追求的:
Live On Coliru
#include <boost/asio.hpp>
#include <boost/asio/ssl.hpp>
int main() {
    const SSL_METHOD* raw_method = SSLv23_server_method();
    SSL_CTX*          raw_ctx    = SSL_CTX_new(raw_method);

    boost::asio::ssl::context ctx(raw_ctx);
} // Note: no SSL_CTX_free(raw_ctx)!
请注意:如果您使用此构造函数,它确实具有所有权。这意味着您不得尝试释放上下文(或任何替代部分,(默认)密码应用程序用户数据),因为这将导致双重释放。无法从 asio::ssl::context 中释放所有权实例。

关于c++ - 从 SSL_CTX 创建 boost asio ssl 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69042905/

相关文章:

javascript - Apache HTTPClient 在相互身份验证期间不发送客户端证书

c++ - OpenSSL 配置最大连接数

ios - OpenSSL 服务器未收到来自 WKWebView 的媒体(音频/视频)请求

java - 在 Java 和 C++ 中增加计数器的最佳方法?

c++ - 在头文件和 cpp 文件中包含一个库

C# SSL/TLS HTTPS 和合法/可信证书错误

.htaccess - 通过 301 重定向将 HTTP 更改为 HTTPS 的正确方法?它会伤害我的 SEO 吗?

java - 无法解密用Java加密的消息

c++ - 为什么不应该将 auto&& 用于局部变量?

C++ 重载解析不明确 - GCC