相关疑难解决方法(0)

Ruby没有找到新版本的OpenSSL

何时何OpenSSL::OPENSSL_VERSION_NUMBER地设置?为什么不设置我刚刚安装的最新OpenSSL?

首先是错误:

$ gem install activesupport -v '3.2.13'
Error while executing gem ... (RuntimeError)
Unsupported digest algorithm (SHA512)
Run Code Online (Sandbox Code Playgroud)

如果我直接进入irb,我可以看到Ruby正在使用"旧"openssl:

$ irb
>> require 'openssl'
=> true
>> OpenSSL::Digest.new('sha512')
RuntimeError: Unsupported digest algorithm (sha512)
>> OpenSSL::OPENSSL_VERSION_NUMBER.to_s(16)
"9070cf"
Run Code Online (Sandbox Code Playgroud)

这告诉我Ruby没有找到我刚刚构建的OpenSSL的本地版本,它至少应该是0x908000.相关代码:

# file: usr/lib/ruby/2.0.0/openssl/digest.rb
...
alg = %w(DSS DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1)
if OPENSSL_VERSION_NUMBER > 0x00908000
  alg += %w(SHA224 SHA256 SHA384 SHA512)
end
Run Code Online (Sandbox Code Playgroud)

解释了为什么它没有找到SHA512.

但我不知道为什么Ruby使用旧版本的OpenSSL.我使用的新资源构建了OpenSSL和Ruby

SANDBOX=/Users/me/sandboxes/ruby2
PATH=$(SANDBOX)/usr/bin:$(PATH)

# Create a fresh OpenSSL from sources
(downloaded and unpacked http://www.openssl.org/source/openssl-1.0.1e.tar.gz) …
Run Code Online (Sandbox Code Playgroud)

ruby macos openssl activesupport

16
推荐指数
1
解决办法
1万
查看次数

是什么导致OpenSSL :: SSL :: SSLErrorWaitReadable"读取会阻塞"?

什么OpenSSL::SSL::SSLErrorWaitReadable "read would block"意思?

我收到错误OpenSSL::SSL::SSLErrorWaitReadable消息read would block.我认为这是因为超时,但我找不到有关该主题的任何文档.

任何人都可以帮我找出造成这种情况的原因吗?我还能做些什么来防止这个问题呢?

偶尔产生此错误的代码:

data = {hello: "world"}
path = "https://example.com/api"
uri = URI.parse(path)
http = Net::HTTP.new(uri.host, uri.port)

http.use_ssl = (uri.scheme == "https")
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
request = Net::HTTP::Post.new(uri.request_uri)
request.body = Oj.dump(data)
request["Content-Type"] = "application/json"
begin
    response = http.request(request) #this line produces the error.
rescue
    return nil
end
Run Code Online (Sandbox Code Playgroud)

我在osx上使用ruby版本2.1.5p273和openssl版本.1.0.1i10.10.3

使用命令找到版本 ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)' 感谢@bayendor

ruby net-http

10
推荐指数
1
解决办法
2628
查看次数

标签 统计

ruby ×2

activesupport ×1

macos ×1

net-http ×1

openssl ×1