c++ - TLS : no application protocol negotiated

标签 c++ ssl networking boost-asio nghttp2

第一次使用 libnghttp2-asio 库,尽管它已被弃用。

我正在试验我认为如何提供 reddit 网页,如下所示:

boost::system::error_code ec;
namespace net = nghttp2::asio_http2;
namespace ssl = boost::asio::ssl;
using boost::asio::ip::tcp;
boost::asio::io_context ioc;
ssl::context tls(ssl::context::tlsv12_client);
tls.set_options(ssl::context::default_workarounds);
// tls.set_verify_mode(boost::asio::ssl::verify_peer);
tls.set_verify_mode(ssl::verify_none);
tls.set_default_verify_paths();
net::client::session session(ioc, tls, "www.reddit.com", "443");
session.on_connect([&session](tcp::resolver::iterator endpoint_it) {
    std::cout << "Connected" << std::endl;
});
session.on_error([](const boost::system::error_code &ec) {
    std::cout << "error: " << ec.message() << std::endl;
});
ioc.run();

输出:

error: tls: no application protocol negotiated

我想知道如何才能成功连接,也许我错过了握手过程?如果是这样,我该怎么办?

最佳答案

nghttp2 默认不执行 ALPN。 解决办法

SSL_CTX_set_alpn_protos(tls.native_handle(), (const unsigned char *)"\x02h2", 3);

关于c++ - TLS : no application protocol negotiated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76780341/

相关文章:

c++ - 尝试将 std::cerr 重定向到文件时出现访问冲突异常

c++ - 如何将 QImage 中的像素数据转换为另一种格式?

magento - 如何修复 Magento 网站的 URL 三角锁?

ssl - 使用 Soap 客户端忽略面向 Windows 8.1 的可移植类库的 SSL 验证

ios - iOS 后台模式下本地主机没有响应

c++ - 在 C++ 中将 memset 设置为 INT_MAX

c++ - 在任何编程语言中通常如何处理异常?

windows - Ubuntu wsl2 git 在大型 repos 上获取 "The remote end hung up unexpectedly"

仅使用 MAC 地址在两个系统之间进行通信

c# - 简单的网络帮助 (C# WinForms)