0

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

我苦苦挣扎了 3 天以找到解决此问题的方法,但没有任何解决方法。

发现 ruby​​installer.org 构建的 OpenSSL 已损坏,但即使我SSL_CERT_FILE 手动设置 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) (来自ruby​​installer )

错误日志:

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
...

有关的:

4

1 回答 1

-2

好的,在这里找到了解决方法。

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

require 'excon'
Excon.ssl_verify_peer = false

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

Excon.ssl_ca_path如果我设置为 OpenSSL CA 目录,它可能也会起作用。我将很快对此进行测试,并在发现时更新此答案。

于 2015-02-20T00:43:24.563 回答