gpt4 book ai didi

c++ - 用于 asio ssl 上下文的单一证书

转载 作者:行者123 更新时间:2023-11-27 23:54:01 28 4
gpt4 key购买 nike

我正在使用 asio C++ 库。创建 SSL 服务器套接字时,我有以下基于示例的工作代码,用于指定服务器证书。

http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/example/ssl/server.cpp

  context_.set_options(
boost::asio::ssl::context::default_workarounds
| boost::asio::ssl::context::no_sslv2
| boost::asio::ssl::context::single_dh_use);
context_.set_password_callback(boost::bind(&server::get_password, this));
context_.use_certificate_chain_file("server.pem");
context_.use_private_key_file("server.pem", boost::asio::ssl::context::pem);
context_.use_tmp_dh_file("dh512.pem");

这里是否可以通过单个证书以某种方式使用 API,而不是像上面那样加载 3 个文件?

最佳答案

不,因为 SSL 套接字必须有证书和私钥。您不能只拥有证书,因为您必须使用私钥解密来自客户端的回复。

有可能在您的服务器上省略 DH 用法。另一个是你可以在同一个文件中同时拥有私钥和证书,如果这是一个关于操作系统要执行多少文件打开查询的问题。但是,我无法想象它对服务器很重要的情况。

作为对评论的回复,关于如何将一个文件用于私钥和证书。没有直接的方法来做到这一点,因为 Boost Asio 不是加密库,而是网络框架。为此,您需要使用类似 OpenSSL 或类似库以及类似 PKCS#12 archive format 的东西。 ,您在一个文件中有多个对象。使用前者 parse the latter .通过 const_buffer 将这些对象的原始数据转发到 use_private_keyuse_certificate_chain,格式可能设置为 ASN.1 .瞧!可维护性降低无数倍,更难理解,不必要,但有效。另一种简单的 hacky 方法是将两个数据都放在 PEM 包中(一个文件带有私钥和 PEM 编码的证书),而不是手动查找 PEM 装甲(-----BEGIN...-----END), 提取对象数据并将其传递给use_private_key, use_certificate_chain 相应指定PEM格式。

关于c++ - 用于 asio ssl 上下文的单一证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43999060/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com