Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Ruby OpenSSL错误 – 缺少CA Certs(谁是Justin?)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个小实用程序脚本,使用 Windows上的 Ruby的Net :: http模块通过httpS处理一些RESTful API.我一直都会遇到这个错误:
C:/Ruby22-x64/lib/ruby/2.2.0/net/http.rb:923:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
    from C:/Ruby22-x64/lib/ruby/2.2.0/net/http.rb:923:in `block in connect'
    from C:/Ruby22-x64/lib/ruby/2.2.0/timeout.rb:74:in `timeout'
    from C:/Ruby22-x64/lib/ruby/2.2.0/net/http.rb:923:in `connect'
    from C:/Ruby22-x64/lib/ruby/2.2.0/net/http.rb:863:in `do_start'
    from C:/Ruby22-x64/lib/ruby/2.2.0/net/http.rb:852:in `start'
    from C:/Ruby22-x64/lib/ruby/2.2.0/net/http.rb:1375:in `request'

根据this post我错过了默认的CA Certs.我跑了他的“ssl医生”脚本,它给了我这个诊断:

C:\Users\Megaflux\Documents\GitHub\Github_BACkup> ruby doctor.rb
C:/Ruby22-x64/bin/ruby (2.2.2-p95)
OpenSSL 1.0.1l 15 Jan 2015: C:/Users/JusTin/Projects/knap-build/var/knapsack/software/x64-windows/openssl/1.0.1l/ssl
SSL_CERT_DIR=""
SSL_CERT_FILE=""

HEAD https://status.github.com:443
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

The server presented a certificate that could not be verified:
  subject: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
  issuer: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
  error code 20: unable to get local issuer certificate

Possible causes:
  `C:/Users/JusTin/Projects/knap-build/var/knapsack/software/x64-windows/openssl/1.0.1l/ssl/cert.pem' does not exist
  `C:/Users/JusTin/Projects/knap-build/var/knapsack/software/x64-windows/openssl/1.0.1l/ssl/certs/' is empty

我可以下载一些根CA证书并在那个目录下安装它们,这并不难.但贾斯汀是谁?我的机器上没有该用户,如果不需要,我宁愿不创建这些文件夹.有谁知道如何更改默认的ssl证书目录?

非常感谢.

编辑:
为了完整起见,我将抛出生成错误的脚本

require 'open-uri'
open("https://www.google.com/") {|f|
   f.each_line {|line| p linE}
}

解决方法

RubyInstaller issue #153

tl; dr:JusTin是编译OpenSSL二进制文件的人.

大佬总结

以上是大佬教程为你收集整理的Ruby OpenSSL错误 – 缺少CA Certs(谁是Justin?)全部内容,希望文章能够帮你解决Ruby OpenSSL错误 – 缺少CA Certs(谁是Justin?)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。