Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Boost SSL服务器失败,出现SSLv3错误 我正在编程C++中的一个“终端”,客户端可以使用SSL连接来加密连接。我使用Boost::asio来处理套接字和SSL_C++_Ssl_Boost_Openssl_Ssl Certificate - Fatal编程技术网

Boost SSL服务器失败,出现SSLv3错误 我正在编程C++中的一个“终端”,客户端可以使用SSL连接来加密连接。我使用Boost::asio来处理套接字和SSL

Boost SSL服务器失败,出现SSLv3错误 我正在编程C++中的一个“终端”,客户端可以使用SSL连接来加密连接。我使用Boost::asio来处理套接字和SSL,c++,ssl,boost,openssl,ssl-certificate,C++,Ssl,Boost,Openssl,Ssl Certificate,我是这样启动SSL上下文的: boost::asio::ssl::context context_(io_service_, boost::asio::ssl::context::tlsv1); 如您所见,我将SSL版本设置为TLSv1 以下是上下文选项: context_.set_options(boost::asio::ssl::context::default_workarounds | boost::asio::ssl::context:

我是这样启动SSL上下文的:

boost::asio::ssl::context context_(io_service_, boost::asio::ssl::context::tlsv1);
如您所见,我将SSL版本设置为
TLSv1

以下是上下文选项:

context_.set_options(boost::asio::ssl::context::default_workarounds
                        | boost::asio::ssl::context::no_sslv2
                        | boost::asio::ssl::context::single_dh_use);

    context_.use_certificate_chain_file("CERTS/server.crt");
    context_.use_private_key_file("CERTS/server.key", boost::asio::ssl::context::pem);
    context_.use_tmp_dh_file("CERTS/dh512.pem");
当我现在使用
openssl s_client-connectlocalhost:8000-tls1连接到服务器时,服务器端的握手失败,错误如下:

“sslv3警报握手失败”

另外,我注意到客户端有一条奇怪的线:

“140030998197920:错误:14082174:SSL例程:SSL3\u检查\u证书\u和\u算法:dh密钥太小:s3\u clnt.c:3329:”

这是什么意思?我创建证书时是否出错?我完全按照中描述的那样做了

您使用的DH密钥只有512位。这样的密钥被认为太弱,在较新版本的TLS库中握手将失败。您最好使用2048位DH密钥,或者更好地使用ECDHE密码

有关此问题的更多详细信息,请参阅

您使用的DH密钥只有512位。这样的密钥被认为太弱,在较新版本的TLS库中握手将失败。您最好使用2048位DH密钥,或者更好地使用ECDHE密码


有关该问题的更多详细信息,请参见。

仅使用
boost::asio::ssl::context::no_sslv2
表示可以使用SSLv3记录层。您可能应该或者在
boost::asio::ssl::context::no_sslv3
中使用<代码>boost::asio::ssl::context::单次使用将破坏性能。您可以考虑生成一个,使用它一个小时,生成另一个,使用它一个小时,等等。对于DH太小的问题,请参见。仅使用代码> Boo:::ASIO:::上下文::NOOSLSLv2<代码>意味着可以使用SSLV3记录层。您可能应该或者在
boost::asio::ssl::context::no_sslv3
中使用<代码>boost::asio::ssl::context::单次使用将破坏性能。您可以考虑生成一个,使用它一个小时,生成另一个,使用它一个小时,等等。对于DH太小的问题,请参见。
context_.use_tmp_dh_file("CERTS/dh512.pem");
... dh key too small:s3_clnt.c:3329:"