nghttp2 api.binance.com ssl ошибка
Я хочу написать клиент для API binance.com, используя http/2. Для этого я пробую библиотеку 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, неудивительно, что он не работает, так как тест ssl на сайте api.binance.com не сообщает о поддержке sslv3. Тестирование на самом nghttp2.org я не получаю эту ошибку. Что-то в согласовании SSL где-то идет не так. Но как я могу увидеть, где?
1 ответ
Эта проблема была исправлена: https://github.com/nghttp2/nghttp2/pull/1173.
Поэтому, если вы спешите и не хотите ждать выхода nghttp2 1.32, вы можете проверить ветку master. Я собрал nghttp из исходного кода, так что я могу сказать, что это требует времени, но это просто.