C++ 带有Boost::Beast的SSL隧道
我想连接到只允许HTTP连接的代理服务器,通过HTTPS与目标服务器对话 代理服务器文档指出,实现这一点的唯一方法是通过HTTP连接动词(他们计划向代理服务器本身添加直接HTTPS连接,但目前只允许HTTP连接) < >我的C++程序中,在几个月内,我用<代码> SSLWSHIVE/代码>成功地连接和工作在目标服务器上,使用<代码> Boo::ASIO < /> >没有代码> Boo::Boovi,但我现在要用代理使用<代码> Boo::Boovi<代码>来使事情变得更容易;因此,我现在知道如何使用boost::asio,但我是一个C++ 带有Boost::Beast的SSL隧道,c++,ssl,proxy,boost-asio,boost-beast,C++,Ssl,Proxy,Boost Asio,Boost Beast,我想连接到只允许HTTP连接的代理服务器,通过HTTPS与目标服务器对话 代理服务器文档指出,实现这一点的唯一方法是通过HTTP连接动词(他们计划向代理服务器本身添加直接HTTPS连接,但目前只允许HTTP连接) < >我的C++程序中,在几个月内,我用 SSLWSHIVE/代码>成功地连接和工作在目标服务器上,使用 Boo::ASIO < /> >没有代码> Boo::Boovi,但我现在要用代理使用 Boo::Boovi来使事情变得更容易;因此,我现在知道如何使用boost::asio,但我
boost::beast
新手(我也不完全了解SSL是如何工作的)
我的想法是,在我的理解中,当您使用ssl\u流时,您可以编写整个通信,但是,我现在需要的是在connecthttp主体中插入加密消息,我不知道如何做到这一点
我已经读到这与最低层
/下一层
有关,但我不确定
有人能提供一个与代理服务器完全读/写连接的示例吗?或者至少进一步澄清
为连接声明一个变量(ioc
是io\u上下文
)
boost::asio::ssl::stream{ioc}代码>
使用Beast构建连接HTTP请求消息(req
)
以纯文本形式将请求发送到代理(注意next\u layer()
)
boost::beast::http::write(stream.next_layer(),req)代码>
从代理读取HTTP响应
如果响应状态为OK(正常),则建立隧道
现在执行SSL握手:
stream.handshake(boost::asio::ssl::stream\u base::client)代码>
此时,您可以将HTTP请求写入stream
,并正常使用Beast从stream
读取HTTP响应(不要再次使用next_layer()
)