gpt4 book ai didi

c++ - boost asio SSL 服务器错误 : called a function you should not call

转载 作者:行者123 更新时间:2023-11-28 04:53:59 26 4
gpt4 key购买 nike

我正在使用 example from boost具有三个细微差别:

  1. 我使用线程来处理io_service
  2. 我已将协议(protocol)限制为 > TLS v1.1
  3. 没有密码回调,因为证书 key 没有密码

线程简单地并行处理各种连接

void server::start()
{
for (std::size_t i = 0; i < thread_pool_size_; i++) {
threads_.push_back(std::thread([&]() {
io_service_.run();
}));
}
for (auto & t : threads_) {
t.join();
}
}

上下文参数是:

ctx.set_options(boost::asio::ssl::context::default_workarounds
|boost::asio::ssl::context::no_sslv2
|boost::asio::ssl::context::no_sslv3
|boost::asio::ssl::context::no_tlsv1
|boost::asio::ssl::context::no_tlsv1_1
|boost::asio::ssl::context::single_dh_use);

除此之外,一个connection类在内部控制一个ssl_socket,它遵循以下回调链:


构造函数
-> 开始
-> async_handshake
-> 读头
-> async_read_until
-> process_header
...

如果我用明文套接字 ip::tcp::socket 替换 SSL 套接字,那么一切正常。使用 SSL 套接字时,我总是调用了一个你不应该调用的函数

GDB 显示这源自 async_handshake。看完this SO post我设法获取了错误代码:

(20,197,66) 错误:140C5042:SSL 例程:ssl_undefined_function:调用了您不应调用的函数

我在 Ubuntu 16.04 上使用 Boost 1.58。关于为什么会发生这种情况、可能导致这种情况的原因或我可能做错了什么的任何帮助?

如果重要的话,我正在使用 -insecure 标志对 curl 进行测试。

编辑

没有尝试使用限制性协议(protocol)标志,并通过设置密码回调 - 问题仍然存在。

最佳答案

似乎是以下行触发了问题:

context_(io_service, boost::asio::ssl::context::tlsv12_client)

我应该多注意我的代码(复制粘贴是万恶之源):有问题的行在 context 构造函数中:

ctx_(io_service, boost::asio::ssl::context::tlsv12_client)

我已经用 server 版本替换了:

context_(io_service, boost::asio::ssl::context::tlsv12_server)

full list is hidden在boost的实现头文件中。在这里插入大脸掌 :-)

关于c++ - boost asio SSL 服务器错误 : called a function you should not call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579409/

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