Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法验证证书-请设置';ENV[';SSL证书文件';]=文件的路径';_Ruby On Rails_Ssl_Amazon S3_Environment Variables_Carrierwave - Fatal编程技术网

Ruby on rails 无法验证证书-请设置';ENV[';SSL证书文件';]=文件的路径';

Ruby on rails 无法验证证书-请设置';ENV[';SSL证书文件';]=文件的路径';,ruby-on-rails,ssl,amazon-s3,environment-variables,carrierwave,Ruby On Rails,Ssl,Amazon S3,Environment Variables,Carrierwave,我有一个Rails 4应用程序,它使用Carrierwave上传文件。在安装Fog将文件上载到Amazon 3后,我在上载文件时开始出现以下错误: Excon::Errors::SocketError in VideosController#create Unable to verify certificate, please set `Excon.defaults[:ssl_ca_path] = path_to_certs`, `ENV['SSL_CERT_DIR'] = path_to_c

我有一个Rails 4应用程序,它使用Carrierwave上传文件。在安装Fog将文件上载到Amazon 3后,我在上载文件时开始出现以下错误:

Excon::Errors::SocketError in VideosController#create

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).
我很困惑,因为我已将“SSL证书文件”添加到我的环境路径(通过控制面板在用户和系统变量下),将其设置为c:/RailsInstaller/cacert.pem(并重新启动我的计算机)

当我的控制器调用@video.save in controllers/videos\u controller时出现错误:

class SessionsController < ApplicationController

def create
  @video = Video.new(video_params)
  if @video.save
    redirect_to videos_path, notice: "Video has been uploaded."
  else
    render "new"
  end
end


private

def video_params
  params.require(:video).permit(:name, :attachment) 
end

end
class sessioncontroller

我在Windows7上,使用Ruby1.9.3p484和RubyGems 2.2.2。有人能帮助我了解此错误的原因以及如何修复它吗?

使用
RVM
修复
SSL
证书

最新版本的
RVM
,即Ruby版本管理器,包含一个实用程序,用于诊断和解决由过期证书文件引起的错误。有关说明和建议,请参阅文章“安装Rails”。
RVM
网站介绍了如何安装RVM

如果已安装
3RVM
,请尝试以下操作:

$ rvm -v
 # rvm 1.19.1 (stable)
$ rvm osx-ssl-certs status all
 # Certificates for
$ rvm osx-ssl-certs update all
 # Updating certificates
有关此问题的更多信息,请参阅上的讨论

你找到答案了吗?@jeff,我想我最终使用了“carrierwave aws”gem,它提供了到Amazon S3的文件上传功能以及Amazon aws sdk gem功能。这让我跳过了Fog(我认为这是导致错误的原因,但记不清了)。我认为我还没有找到解决证书错误的方法。我认为您需要通过控制台为服务器定义ENV。在heroku中,您可以执行heroku配置:set SSL_CERT_DIR=frfboxc88b1bd SSL_CERT_FILE=c5707cff6dd5b11a06
不久前,我在heroku上遇到了类似的问题,并用中的信息解决了它。对我来说,解决这个问题的方法是在heroku上安装
ca bundle.crt
,然后运行
heroku配置:set SSL\u CERT\u FILE=/app/lib/ca bundle.crt
在过去的卸载fog时遇到了excon错误,最终导致了问题。我必须这样做来修复brew更新;brew卸载openssl;brew安装openssl