0

asset_sync gemを使用して、Rails アセットをローカルでコンパイルし、S3 バケットにアップロードしたいと考えています。しかし、それらをコンパイルしてアップロードしようとすると、SSL 証明書を検証できないため、rake タスクが中止されます。

この問題の回避策を見つけるために 3 日間苦労しましたが、何も解決しませんでした。

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

OK、ここで回避策を見つけました。

config/initializers/asset_sync.rb に追加するだけです:

require 'excon'
Excon.ssl_verify_peer = false

それは最も安全なことではありませんが、私の目的には適しています。

Excon.ssl_ca_pathOpenSSL CA-directoryに設定すれば、うまくいくかもしれません。すぐにテストし、見つけたらこの回答を更新します。

于 2015-02-20T00:43:24.563 に答える