Rails Httpclient 2.7.1:OpenSSL :: SSL :: SSLError:无法生成秘密

时间:2016-03-31 09:36:02

标签: ruby-on-rails ruby ruby-on-rails-3 httpclient

我收到错误

OpenSSL::SSL::SSLError: Could not generate secret
    from ...../httpclient-2.7.1/lib/httpclient/jruby_ssl_socket.rb:504:in `initialize'
    from ..../httpclient-2.7.1/lib/httpclient/jruby_ssl_socket.rb:442:in `create_socket'
    from ..../httpclient-2.7.1/lib/httpclient/session.rb:739:in `connect'

有人面对面吗?

2 个答案:

答案 0 :(得分:1)

从一些谷歌搜索,这似乎是由底层java实现引起的问题,它负责设置TLS连接时的实际加密。看来,大多数情况下,当尝试使用椭圆曲线键设置TLS连接时会发生此错误。

有一些报告的错误描述与您的类似,可以使用较新版本的Java修复,例如: JRE 8.此外,我发现a report这个问题似乎与OpenJDK有关,OpenJDK与Oracle Java略有不同。

因此,您应该首先尝试迁移到更新版本的Oracle Java。如果失败了,你可以通过将其添加到JRuby参数中来禁用椭圆曲线加密并回退到“old-school”加密:

conf.py

但请注意,如果可以避免椭圆曲线加密,通常不建议在此处关闭椭圆曲线加密。 ECC速度更快(双方CPU密集度更低),并且通常比替代方案更安全。

答案 1 :(得分:0)

此处可用的调试选项使用并修复问题

require 'openssl'
   OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE