asset_sync/fog Невозможно проверить сертификат SSL

Я хочу использовать гем asset_sync для локальной компиляции моих Rails-ресурсов, а затем загрузить их в мое хранилище S3. Но когда я пытаюсь скомпилировать и загрузить их, задача rake прерывается, потому что она не может проверить SSL-сертификат.

Я изо всех сил в течение 3 дней, чтобы найти решение этой проблемы, но ничего не решило.

Обнаружил, что OpenSSL сборок rubyinstaller.org не работает, но даже если я установлю SSL_CERT_FILE вручную задача rake завершается с той же ошибкой (хотя я могу установить HTTPS-соединение в ruby ​​с этой настройкой).

Работает:

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) (от http://rubyinstaller.org/)

Журнал ошибок:

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 ответ

Решение

Хорошо, нашел обходной путь здесь.

Просто добавьте в config/initializers/asset_sync.rb:

require 'excon'
Excon.ssl_verify_peer = false

Это не самая безопасная вещь, но она работает для моих целей.

Может быть, это тоже будет работать, если я установлю Excon.ssl_ca_path в CA-каталог OpenSSL. Я проверю это в ближайшее время и обновлю этот ответ, когда узнаю.

Другие вопросы по тегам