使用客户端证书 sslv3 握手失败的 Boost asio GET

2023-12-27

我想做一个简单的 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(使用前将#替换为@)

使用客户端证书 sslv3 握手失败的 Boost asio GET 的相关文章

随机推荐