Ruby rails paperclip Seahorse::Client::NetworkingError(SSL_connect returned=1 errno=0 state=error:证书验证失败)

r1zhe5dt  于 2023-05-17  发布在  Ruby
关注(0)|答案(3)|浏览(212)

我正在使用Ruby on Rails,paperclip 5 gem,我用它来上传图像到Amazon S3存储。
提交时,在我的实际主机上,一切都很完美,上传成功,但如果我在localhost上上传,我会得到以下错误:

Completed 500 Internal Server Error in 3395ms (ActiveRecord: 2.5ms)

Seahorse::Client::NetworkingError (SSL_connect returned=1 errno=0 state=error: certificate verify failed):

我想这是因为我没有在本地主机SSL。在本地主机上,是否有一种不使用SSL访问S3存储的方法?有这样的设置吗?

gdx19jrr

gdx19jrr1#

您的问题的解决方案是加载证书。如果您的SSL版本没有这些证书,您可以使用打包的证书,如下所示:QuickStart Guide to Using the AWS SDK for Ruby
aws-sdk-ruby repo中也解决了此问题
像Aniket建议的那样忽略证书验证是一个坏主意。

r8uurelv

r8uurelv2#

我遇到了同样的错误,SSL证书无法验证,因为我在 Zscaler 代理后面。所以我跟着这个Zscaler help for Ruby > macOS and Linux。但这并没有解决问题。
所以我做了以下解决Seahorse::Client::NetworkingError问题。

  • 查找Ruby的证书路径
$ ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'
"/usr/local/etc/openssl@3/cert.pem"
  • 这个路径实际上是一个符号链接,它将您指向原始位置
$ ls -l /usr/local/etc/openssl@3/cert.pem
lrwxr-xr-x 1 username admin 27 Apr 17 23:00 /usr/local/etc/openssl@3/cert.pem -> ../ca-certificates/cert.pem
  • 将此路径添加到~/.zshrc文件(对于macOS),~.bashrc(对于Linux)
$ echo "export SSL_CERT_FILE=/usr/local/etc/ca-certificates/cert.pem" >> ~/.zshrc
  • 不要忘记加载新的更改
$ source ~/.zshrc
ghhaqwfi

ghhaqwfi3#

在初始化器中创建一个文件,并将下面的代码

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

相关问题