ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux-使用ECDSA证书问题增强asio

2019-11-22 19:50:36  阅读:444  来源: 互联网

标签:ssl openssl boost boost-asio linux


我正在使用boost :: asio实现SSL服务器.

上下文初始化显示在下面的代码中

    boost::asio::ssl::context_base::method SSL_version =
            static_cast<boost::asio::ssl::context_base::method>(param_values[ID_PROTOCOL_VERSION].int32_value);

    // load certificate files
    boost::shared_ptr<boost::asio::ssl::context> context_ = boost::shared_ptr<boost::asio::ssl::context>(
            new boost::asio::ssl::context(SSL_version));     
    p_ctx = boost::static_pointer_cast<void>(context_);

    context_->set_options(boost::asio::ssl::context::default_workarounds);

    context_->use_certificate_chain_file(cert_chain_file);
    context_->use_certificate_file(cert_file, boost::asio::ssl::context::pem);
    context_->use_private_key_file(cert_file, boost::asio::ssl::context::pem);

    context_->set_verify_mode(boost::asio::ssl::verify_peer | boost::asio::ssl::verify_fail_if_no_peer_cert);
    context_->set_verify_callback(boost::bind(&verify_certificate_cb, _1, _2));

    if (param_values[ID_CIPHER_LIST].int32_value != 0)
    {
        std::string cipher_list = "";
        generate_cipher_list(param_values[ID_CIPHER_LIST].int32_value, cipher_list);
        MA5G_logger::log(PRIORITY_INFO, "Supported cipher list %s", cipher_list.c_str());
        SSL_CTX_set_cipher_list((reinterpret_cast<boost::asio::ssl::context*>(p_ctx.get()))->native_handle(),
                cipher_list.c_str());
    }

在cipher_list中,我支持以下列表

AES128-SHA:AES256-SHA:AES128-SHA256:AES256-SHA256:AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA

使用ECDSA证书,如果我使用上面给出的cipher_list,则客户端无法连接到服务器,并显示错误“无共享密码”.但是,如果我不提供cipher_list,则客户端可以成功连接到服务器.相同的密码列表可以很好地用于RSA证书.

如果我使用带有-cipher选项的openssl s_server来提供受支持的cipher_list,则相同的ECDSA证书可以正常工作

谁能解决这个问题?

解决方法:

抱歉,我经过大量研究后找到了答案.

问题出在密码列表上,而不是密码/证书上.

同一证书使用带有openssl客户端-服务器的ECDHE-ECDSA-AES256-SHA密码,而使用ECDH-ECDSA-AES256-SHA密码来增强asio SSL客户端-服务器.

无论如何,感谢@rkyser的帮助!

标签:ssl,openssl,boost,boost-asio,linux
来源: https://codeday.me/bug/20191122/2062103.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有