我想做一个简单的 C++ web get 类似于这个curl命令所做的事情。我可以使用 boost 中的 asio 。我必须使用boost 1.49
curl https://mysite.dev/api/v1/search?q=test https://mysite.dev/api/v1/search?q=test-k--证书
C:\work\testCert.pem
服务器需要客户端证书。
我首先以此为例http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/example/ssl/client.cpp 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 警报握手失败
显然握手过程中我缺少一个步骤
解决方案是禁用 SSLv3 支持,显然大多数服务器由于设计缺陷而禁用此功能。
ctx.set_options(boost::asio::ssl::context::default_workarounds |
boost::asio::ssl::context::no_sslv2 |
boost::asio::ssl::context::no_sslv3);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)