asset_sync/fog 无法验证 SSL 证书
asset_sync/fog Unable to verify SSL certificate
我想使用 asset_sync gem 在本地编译我的 Rails 资产,然后将它们上传到我的 S3 存储桶。
但是当我尝试编译并上传它们时,rake 任务中止,因为它无法验证 SSL 证书。
我苦苦挣扎了 3 天以找到解决此问题的方法,但没有解决它。
发现 rubyinstaller.org 构建的 OpenSSL 是 broken, but even if I set 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
...
相关:
Unable to verify certificate - please set 'ENV['SSL_CERT_FILE'] = path_to_file',
How to solve "certificate verify failed" on Windows?
好的,找到解决方法 here。
只需添加到 config/initializers/asset_sync.rb:
require 'excon'
Excon.ssl_verify_peer = false
这不是最安全的方法,但对我来说很管用。
如果我将 Excon.ssl_ca_path
设置为 OpenSSL CA 目录,也许它也会起作用。我会尽快测试并在发现后更新此答案。
我想使用 asset_sync gem 在本地编译我的 Rails 资产,然后将它们上传到我的 S3 存储桶。 但是当我尝试编译并上传它们时,rake 任务中止,因为它无法验证 SSL 证书。
我苦苦挣扎了 3 天以找到解决此问题的方法,但没有解决它。
发现 rubyinstaller.org 构建的 OpenSSL 是 broken, but even if I set 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
...
相关:
Unable to verify certificate - please set 'ENV['SSL_CERT_FILE'] = path_to_file',
How to solve "certificate verify failed" on Windows?
好的,找到解决方法 here。
只需添加到 config/initializers/asset_sync.rb:
require 'excon'
Excon.ssl_verify_peer = false
这不是最安全的方法,但对我来说很管用。
如果我将 Excon.ssl_ca_path
设置为 OpenSSL CA 目录,也许它也会起作用。我会尽快测试并在发现后更新此答案。