用客户端证书提升asio GET sslv3握手失败

时间:2017-03-30 12:16:49

标签: ssl boost boost-asio client-certificates

我想做一个简单的C ++ web,类似于这个curl命令所做的。我可以使用来自boost的asio。我必须使用boost 1.49

  

curl https://mysite.dev/api/v1/search?q=test -k --cert   C:\工作\ testCert.pem

服务器需要客户端证书。

我首先以此为例http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/example/ssl/client.cpp

我通过添加对上下文的调用添加了修改,如

ctx.set_options(boost::asio::ssl::context::default_workarounds);
ctx.use_certificate_file("C:\\work\\testCert.pem", boost::asio::ssl::context_base::pem);
ctx.use_private_key_file("C:\\work\\testKey.pem", boost::asio::ssl::context_base::pem);

我的要求看起来像这样:

  

GET / api / v1 / search?q =测试HTTP / 1.0
  主持人:mysite.dev
  接受:* / *

但我一直收到这样的消息

  

错误:sslv3警报握手失败

显然,握手过程中缺少一个步骤

1 个答案:

答案 0 :(得分:0)

解决方案是禁用SSLv3支持,有些大多数服务器因设计缺陷而禁用此功能。

ctx.set_options(boost::asio::ssl::context::default_workarounds |
                boost::asio::ssl::context::no_sslv2 |
                boost::asio::ssl::context::no_sslv3);