Boost SSL服务器失败,出现SSLv3错误 我正在编程C++中的一个“终端”,客户端可以使用SSL连接来加密连接。我使用Boost::asio来处理套接字和SSL
我是这样启动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:
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:"