在Windows上的ruby中获取SSL错误

时间:2016-05-20 01:25:31

标签: ruby windows ssl

我收到以下错误:

C:\Users\user\Desktop\folder>ruby exchange_rate.rb
C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect
returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify fai
led (OpenSSL::SSL::SSLError)
        from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect'
        from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
        from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:852:in `start'
        from exchange_rate.rb:55:in `<main>'

根据

https://gist.github.com/luislavena/f064211759ee0f806c88

和具有完全相同信息的其他地方仅影响最高2.2.x的rubygems版本

但是我的安装是: ruby 2.3.0p0(2015-12-25修订版53290)[x64-mingw32] with ruby​​gems 2.5.1 我仍然明白了

我在其他地方查找.pem文件后尝试了手动解决方案https://github.com/rubygems/rubygems/blob/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem

由于链接不再起作用,这就是

的内容
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----

这与我的完全相同

我将rubygems升级到2.6.4仍然遇到同样的问题

任何人都可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

通过安装此gem来解决我的问题

net_http_ssl_fix

此处的文档:

http://blog.liveeditorcms.com/net-http-ssl-fix-gem/

我不知道为什么它会修复,为什么需要另外一颗宝石在常规宝石之上,但是,到底是什么,它有效!

答案 1 :(得分:2)

安装了2.3.1此链接的任何人都解决了我在Windows中安装gems的SSL问题。

https://superdevresources.com/ssl-error-ruby-gems-windows/

要点:

  1. 从此处{。{3}}下载.pem文件并保存到C:\ Rails \ Installer \ cacert.pem。

  2. 右键单击计算机并选择属性。

  3. 然后单击高级系统设置,然后单击环境变量。

  4. 创建一个新的系统变量,其名称为SSL_CERT_FILE,路径为C:\ Rails \ Installer \ cacert.pem。

  5. 打开命令提示符并确认您可以安装gem。

  6. I.E - gem install watir

答案 2 :(得分:1)

对我来说有用的是下载证书文件并将SSL_CERT_FILE环境变量指向它。我的来源是this gist by fnichol。 (我遵循“手动方式(无聊)”的说明。)

  1. http://curl.haxx.se/ca/cacert.pem下载到某个永久位置。
  2. 将环境变量SSL_CERT_FILE设置为下载文件的路径。
  3. 现在突然,HTTPS请求(与gem安装无关)对于我在Windows 10上使用Ruby 2.2.x(x64)会有效。

答案 3 :(得分:0)

对我来说,通过RubyInstaller-2.4.3-1(对于windows)升级到ruby v2.4.3有所帮助。安装程序可以从https://rubyinstaller.org下载。