[英]Getting error: “OpenSSL::SSL::SSLError: certificate verify failed” in JRuby
我已经在 CentOS 7.4 上安装了 JRuby 的最新版本(9.1.13.0)和 RVM 的最新版本(1.29.3)
一切正常,但 HTTPS 和 SSL 连接失败并出现以下错误:
OpenSSL::SSL::SSLError: certificate verify failed
from org/jruby/ext/openssl/SSLSocket.java:228:in `connect_nonblock'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/net/http.rb:938:in `connect'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/net/http.rb:868:in `do_start'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/net/http.rb:857:in `start'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/open-uri.rb:319:in `open_http'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/open-uri.rb:737:in `buffer_open'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/open-uri.rb:212:in `block in open_loop'
from org/jruby/RubyKernel.java:1114:in `catch'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/open-uri.rb:210:in `open_loop'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/open-uri.rb:151:in `open_uri'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/open-uri.rb:717:in `open'
from /usr/local/rvm/rubies/jruby-9.1.13.0/lib/ruby/stdlib/open-uri.rb:35:in `open'
我试过重新安装 OpenSSL 和 ca 证书以及 RVM 和 JRuby。 另外,我尝试用手动下载的文件替换证书文件,但没有任何效果。
更新:我已经用doctor.rb测试了我的问题:
export SSL_CERT_DIR='/etc/pki/tls/certs/' ; ruby doctor.rb www.google.com:443
并得到:
/usr/local/rvm/rubies/jruby-9.1.13.0/bin/jruby (2.3.3) JRuby-OpenSSL
0.9.21: /etc/ssl SSL_CERT_DIR="/etc/pki/tls/certs/" SSL_CERT_FILE="/etc/pki/tls/certs/ca-bundle.crt"
HEAD https://www.google.com:443 OpenSSL::SSL::SSLError: certificate
verify failed
The server presented a certificate that could not be verified:
subject: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA issuer:
/C=US/O=Equifax/OU=Equifax Secure Certificate Authority error code
20: unable to get local issuer certificate
更新 2:有趣的一点是,对www.facebook.com
和www.apple.com
等其他服务器的 SSL 连接测试工作正常!
Jruby 使用自己的 OpenSSL 实现
我相信你有同样的问题: https : //github.com/jruby/jruby-openssl/issues/141#issuecomment-332788620
我在 CentOS 上也有类似的问题。
我通过使用我的浏览器(firefox)并将“证书链”保存到“.pem”文件来解决它。
然后设置 env 变量:
SSL_CERT_FILE=/tmp/certificate_chain.pem
在 Jruby/openSSL/centOs 上有多个报告的错误。
CentOS ca-certificate 结构与其他发行版不同,JRuby + openSSL 似乎有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.