Per*_*-lk 4 c++ ssl proxy boost-asio boost-beast
我想连接到只允许 HTTP 连接的代理服务器,通过 HTTPS 与目标服务器通话。
代理服务器文档指出,唯一的方法是通过 HTTP Connect 动词(他们计划将直接 HTTPS 连接添加到代理服务器本身,但目前只允许 HTTP 连接)。
在我的 C++ 程序中,我ssl_stream在几个月内使用's成功连接并与目标服务器一起工作,使用boost::asiowithout boost::beast,但我现在想使用代理boost::beast使事情变得更容易;所以,我现在如何使用 boost::asio 但我是一个boost::beast新手(我也不完全了解 SSL 是如何工作的)。
我的想法是,在我的理解中,当您使用 a 时ssl_stream,您对整个通信进行了加密,但是,我现在需要的是将加密的消息插入到 CONNECT HTTP 正文中,我不知道该怎么做。
我读过这与lowest_layer/next_layer事情有关,但我不确定。
任何人都可以提供与代理服务器的完整读/写连接的示例吗?或至少进一步澄清?
为连接声明一个变量(ioc是io_context)
boost::asio::ssl::stream<boost::asio::ip::tcp::socket> stream{ioc};
req使用 Beast构建 CONNECT HTTP 请求消息 ( )
以纯文本形式向代理发送请求(注意next_layer())
boost::beast::http::write(stream.next_layer(), req);
从代理读取 HTTP 响应
现在执行 SSL 握手:
stream.handshake(boost::asio::ssl::stream_base::client);
此时,您可以照常使用 Beast将 HTTP 请求写入stream和读取 HTTP 响应stream(不要next_layer()再次使用)。
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |