Boost asio GET with client certificate sslv3 hand shake failed

柔情痞子 提交于 2019-12-24 09:38:52

问题


I want to do a simple C++ web get similar to what is done by this curl command. I can use asio from boost. I must use boost 1.49

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

The server is requiring the client certificate.

I started by using this as an example http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/example/ssl/client.cpp

and I added modifications by adding calls to the context like

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);

My Request Looks like this:

GET /api/v1/search?q=test HTTP/1.0
Host: mysite.dev
Accept: */*

but I keep getting messages like this

Error: sslv3 alert handshake failure

clearly there is a step I am missing in the handshake process


回答1:


The solution was to disable SSLv3 support, appartently most servers disable this because of design flaws.

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


来源:https://stackoverflow.com/questions/43117638/boost-asio-get-with-client-certificate-sslv3-hand-shake-failed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!