Ruby OpenSSL :: SSL :: SSLError - PullRequest
       6

Ruby OpenSSL :: SSL :: SSLError

0 голосов
/ 10 марта 2019

Я анализирую данные рынка криптовалют и использую публичный API определенных бирж. Программа делает HTTPS-запросы каждые несколько секунд. Как ни странно, он делает ровно 336 запросов, а по 337 запросам он всегда терпел неудачу:

/.rbenv/versions/2.4.5/lib/ruby/2.4.0/net/protocol.rb:44:in `connect_nonblock': SSL_connect SYSCALL returned=5 errno=0 state=error: certificate verify failed (OpenSSL::SSL::SSLError)

Я пробовал различные задержки между запросами (1 секунда, 5, 10 секунд), различные обмены (Bittrex, Poloniex, Tradeogre), различные версии Ruby (2.3.8, 2.4.5, 2.5.3) и различные дистрибутивы Linux (Ubuntu 18.04.2 LTS, Debian 9.8) на разных хостингах (Google Compute Engine, Amazon EC2). Это всегда одно и то же - оно терпит неудачу на итерации # 337. На моей локальной машине (Ruby 2.5.3, Linux Mint 18.3) программа работает без таких проблем, происходит сбой только при работе на сервере. Понятия не имею, в чем проблема и как ее исправить. Спасибо за совет.

1 Ответ

0 голосов
/ 11 марта 2019

Идеи:

  • Отключить проверку сертификата сервера (это небезопасно ): open(request_uri, { ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE }) (см. https://stackoverflow.com/a/19172281/384689)

  • Попробуйте другое хранилище CA (центр сертификации). Например, вы можете загрузить файл, используемый Firefox: https://curl.haxx.se/docs/caextract.html и передать его как параметр cert_store в start () метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...