asset_sync / fog无法验证SSL证书

时间:2015-02-19 21:44:06

标签: ruby-on-rails ruby openssl fog excon

我想使用asset_sync gem在本地编译我的Rails资源,然后将它们上传到我的S3存储桶。 但是当我尝试编译&上传rake任务中止,因为它无法验证SSL证书。

我挣扎了3天才找到解决此问题的方法,但没有解决它。

发现rubyinstaller.org的版本的OpenSSL是broken,但即使我设置SSL_CERT_FILE manually,rake任务也会失败并出现相同的错误(即使我可以使用该设置在ruby中建立HTTPS连接。)

使用:

set SSL_CERT_FILE=C:\ruby\cacert_test\cacert.pem
ruby -ropen-uri -e 'puts open("https://www.google.com/accounts").read'

失败:

set SSL_CERT_FILE=C:\ruby\cacert_test\cacert.pem
bundle exec rake assets:precompile RAILS_ENV=production

系统:Win 8.1(x64)和ruby 2.1(x64)(来自rubyinstaller

错误日志:

Excon::Errors::SocketError: Unable to verify certificate, please set `Excon.defaults[:ssl_ca_path] = path_to_certs`, `ENV['SSL_CERT_DIR'] = path_to_certs`, `Excon.defaults[:ssl_ca_file] = path_to_file`, `ENV['SSL_CERT_FILE'] = path_to_file`, `Excon.defaults[:ssl_verify_callback] = callback` (see OpenSSL::SSL::SSLContext#verify_callback), or `Excon.defaults[:ssl_verify_peer] = false` (less secure).
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
...

相关:

1 个答案:

答案 0 :(得分:-2)

好的,找到了解决方法here

只需添加到config / initializers / asset_sync.rb:

require 'excon'
Excon.ssl_verify_peer = false

这不是最安全的事情,但它适用于我的目的。

如果我将Excon.ssl_ca_path设置为OpenSSL CA目录,也许它也会起作用。我会尽快测试,并在我发现时更新这个答案。