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:UsersMegafluxDocumentsGitHubGithub_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二进制文件的人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |