Ruby OpenSSL::SSL::SSLError



我正在分析加密货币市场数据并使用某些交易所的公共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)和各种主机(Google Compute Engine,Amazon EC2)上的各种Linux发行版(Ubuntu 18.04.2 LTS,Debian 9.8)。总是相同的 - 它在迭代#337上失败。在我的本地计算机(Ruby 2.5.3,Linux Mint 18.3)上,该程序没有此类问题,它仅在服务器上运行时才失败。不知道问题是什么以及如何解决。谢谢。

想法:

  • 禁用服务器证书验证(这是 insecure ):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参数to Start()方法

最新更新