ssl - nghttp2 api.binance.com ssl 错误
问题描述
我想使用 http/2 为 binance.com 的 api 编写一个客户端。为此,我正在尝试库 nghttp2,我在他们的示例代码中对 api 进行了测试调用:
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");
[...]
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,所以我可以说这需要时间,但构建起来很简单。
推荐阅读
- android - 创建 Android 图标的“添加图像资源”在哪里?
- excel - 未收到 Next 的错误消息
- c# - 调用 WebApi Endpoint 传入对象
- html - 如何在不使用辅助路线的情况下以角度在特定页面上添加侧边菜单
- elasticsearch - 无法按“公司”一词搜索
- c# - 如何将此 UTC 日期时间字符串转换为 DateTime 对象 c#
- c - 为什么打印了两行“输入他们的标记”虽然我只写了一行?
- ios - 使用 Webview 从未知网站获取数据
- javascript - 带有js的数组或者我可以用其他方式吗
- ruby-on-rails - rspec binstub (bin/rspec) 的未初始化常量错误,但 rspec 本身没有