【发布时间】:2014-08-16 19:17:34
【问题描述】:
我正在使用 pion 网络库来编写 HTTP(s) 服务器,pion 是 boost::asio 的包装器。我需要服务器同时支持 HTTP 和 HTTPS,HTTP 完成:
#include "pion/http/server.hpp"
#include "pion/http/response_writer.hpp"
using namespace pion;
using namespace pion::http;
struct fake_server {
void start() {
m_server = pion::http::server_ptr(new pion::http::server(80));
m_server->add_resource("/", boost::bind(&fake_server::handle_request, this, _1, _2));
m_server->start();
}
void handle_request(http::request_ptr& _httpRequest, tcp::connection_ptr& _tcpConn) {
http::response_writer_ptr writer(
http::response_writer::create(
_tcpConn,
*_httpRequest,
boost::bind(&tcp::connection::finish, _tcpConn)));
http::response& r = writer->get_response();
writer->write("hello world");
writer->send();
}
pion::http::server_ptr m_server;
};
int main() {
fake_server svr;
svr.start();
while(1) {
Sleep(0);
}
}
但我不知道如何处理 HTTPS,我尝试将端口设置为 443,并将 ssl 标志设置为:
void start() {
m_server = pion::http::server_ptr(new pion::http::server(443)); // 443
m_server->set_ssl_flag(true); // ssl flag
m_server->add_resource("/", boost::bind(&fake_server::handle_request, this, _1, _2));
m_server->start();
}
它不起作用,我收到一个错误“no shared cipher”,我搜索了这个错误并找到了一些使用 openssl 生成证书对然后将这些证书对加载到服务器/客户端,但我的客户端应用程序是 Web 浏览器,浏览器不会使用这些生成的证书。
有什么想法吗?
谢谢。
【问题讨论】:
标签: c++ https boost-asio