关于tls1.2:nghttp2 api.binance.com SSL错误

nghttp2 api.binance.com ssl error

我想使用http / 2为binance.com的api编写一个客户端。
为此,我正在尝试库nghttp2,将对api的测试调用放入其示例代码中:

1
2
3
4
5
6
7
8
9
10
11
int main(int argc, char *argv[]) {
  boost::system::error_code ec;
  boost::asio::io_service io_service;

  boost::asio::ssl::context tls(boost::asio::ssl::context::sslv23);
  tls.set_default_verify_paths();
  // disabled to make development easier...
  // tls.set_verify_mode(boost::asio::ssl::verify_peer);
  configure_tls_context(ec, tls);

  session sess(io_service, tls,"api.binance.com","443");

[...]

1
    auto req = sess.submit(ec,"GET","https://api.binance.com/api/v1/ping");

[...]

但是它总是以错误处理程序告诉我

sslv3警报握手失败

我不知如何调试它。 我什至可以做些什么才能理解为什么它不起作用? 我试图将tls上下文创建中的打开更改为其他内容,例如tlsv12,但没有任何效果。 如果它确实在尝试使用sslv3,则它不起作用也就不足为奇了,因为api.binance.com的ssl测试报告不支持sslv3。
在nghttp2.org本身上进行测试,我没有收到此错误。 关于SSL协商的某些地方出了问题。 但是我怎么看呢?


此问题已修复:https://github.com/nghttp2/nghttp2/pull/1173。

因此,如果您急于不想等待nghttp2 1.32发布,可以签出master分支。 我确实是从源代码构建nghttp的,所以可以说这很费时间,但是构建起来很简单。