我想做一个简单的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警报握手失败
显然,握手过程中缺少一个步骤
答案 0 :(得分:0)
解决方案是禁用SSLv3支持,有些大多数服务器因设计缺陷而禁用此功能。
ctx.set_options(boost::asio::ssl::context::default_workarounds |
boost::asio::ssl::context::no_sslv2 |
boost::asio::ssl::context::no_sslv3);