"错误的版本号"使用Boost ASIO& SSL(C ++)

时间:2017-07-18 22:07:18

标签: c++ ssl boost boost-asio

我尝试使用Boost Asio连接到服务器(用Golang编写)。我可以连接和读/写没有加密,但我似乎无法获得SSL支持。基本上,每当我尝试握手时,我都会收到一个"错误的版本号"。

这是一个片段,展示了我是如何尝试设置它的。我没有尝试执行任何验证,只是进行连接。在代码中的这一点上,客户端已连接到服务器并交换了一些未加密的命令。

boost::asio::ssl::context ctx(*ios, boost::asio::ssl::context::tlsv12_client);  //also tried sslv23, etc
ctx.set_verify_mode(boost::asio::ssl::context::verify_none);
this->sslSocket = new boost::asio::ssl::stream<boost::asio::ip::tcp::socket&>(*socket, ctx);  
this->sslSocket->async_handshake(boost::asio::ssl::stream_base::client,
            boost::bind(&MyConnection::handleHandshake, this,
            boost::asio::placeholders::error));

&MyConnection::handleHandshake()收到握手的结果。

所以问题是:

  • 以上代码是否正常执行连接服务器通常需要做的所有事情?我错过了一步吗?
  • 是否存在服务器端问题?我检查了Go代码,它确实支持TLS 1.0 / 1.1 / 1.2以及SSL 2&amp; 3

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,后来才知道我试图连接到端口 80 而不是 443(SSL 端口)。通过将端口更改为 443,问题得到解决。