【问题标题】:Boost Asio Client Can't Connect to server with selfsigned certificateBoost Asio 客户端无法使用自签名证书连接到服务器
【发布时间】:2021-05-13 08:05:09
【问题描述】:

我正在尝试使用 boost asio 作为 Rest API 的一部分连接到 https 服务器。不过,我能得到它。服务器具有自签名证书。我禁用了验证,但随后在握手中显示“dh 密钥太小”。

这是我的代码:

#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/asio/ssl.hpp>
using namespace std;
using namespace boost;


int main(){
    try{
        asio::io_service ioService;
        asio::ssl::context sslContext(asio::ssl::context::sslv23);
        
        
        asio::ip::tcp::resolver resolver(ioService);
        asio::ip::tcp::resolver::query query("201.175.33.14", "9005");
        asio::ip::tcp::resolver::iterator endpointIterator = resolver.resolve(query);
        
        boost::asio::ssl::stream<boost::asio::ip::tcp::socket> socket(ioService, sslContext);
        
        ioService.run();
        
        // Enable SSL peer verification.
        socket.set_verify_mode(asio::ssl::verify_none);
        SSL_set_tlsext_host_name(socket.native_handle(), "201.175.33.14");
        
        asio::connect(socket.lowest_layer(), endpointIterator);
        //------------------------------
        //here is where the program fails 
        socket.handshake(asio::ssl::stream_base::client);
        //---------------------------
        boost::asio::streambuf request;
        std::ostream requestStream(&request);
        requestStream << "GET / HTTP/1.0\r\n";
        requestStream << "Host: 201.175.33.14\r\n";
        requestStream << "Accept: */*\r\n";
        requestStream << "Connection: close\r\n\r\n";
        
        asio::write(socket, request);
    }catch (std::exception& e)
    {
        std::cout << e.what();
    }
}

输出是:

握手:dh 键太小

关于如何解决问题的任何想法???? 谢谢

【问题讨论】:

    标签: c++ ssl boost-asio self-signed


    【解决方案1】:

    添加行

    SSL_CTX_set_cipher_list(sslContext.native_handle(),"HIGH:!DH:!aNULL");
    

    在连接之前为我解决了问题。

    【讨论】:

    • 为什么是这个答案?似乎与自签名的证书关系不大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多