【问题标题】:https server using boost::asio (pion library) complains "no shared cipher"使用 boost::asio(pion 库)的 https 服务器抱怨“没有共享密码”
【发布时间】: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


    【解决方案1】:

    您需要提供服务器用于协商安全连接的 SSL 证书和密钥。这将通过以下方式完成:

    m_server->set_ssl_key_file(pem_filename);
    

    其中pem_filename 是包含 SSL 证书和密钥的 PEM 格式文件的名称。密钥不得加密。如果您还没有来自受信任的证书颁发机构的自签名证书,有许多 Internet 教程会告诉您如何创建自签名证书。如果您在单独的文件中有密钥和证书,则只需将它们连接到一个文件中。

    客户端不需要事先配置证书/密钥(在这种情况下),但请注意,使用自签名证书(或任何未经受信任的证书颁发机构签名的证书)会在大多数网络上生成安全警告浏览器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      相关资源
      最近更新 更多