配置S3/Paperclip遇Seahorse证书验证失败的NetworkingError
SSL证书验证失败错误(Seahorse::Client::NetworkingError)——S3/Paperclip服务搭建问题
最近在搭建基于S3和Paperclip的文件存储服务时,碰到了一个头疼的SSL证书验证错误,具体报错信息如下:
Seahorse::Client::NetworkingError (SSL_connect returned=1 errno=0 state=error: certificate verify failed)
我的Paperclip配置如下:
config.paperclip_defaults = { storage: :s3, s3_host_name: "s3-eu-west-1.amazonaws.com", s3_credentials: { bucket: "my-buckt-name", access_key_id: "NOT-TELLING-YOU", secret_access_key: "NOT-TELLING-YOU-EITHER", s3_region: "s3-eu-west-1", } }
临时可行但不安全的解决方法
当我禁用SSL证书验证后,文件可以正常上传,有两种实现方式:
- 全局禁用OpenSSL验证:
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
- 针对AWS SDK单独禁用验证:
Aws.config[:ssl_verify_peer] = false
显然这两种方式都存在安全风险,但这也说明我的S3/Paperclip核心配置本身是正确的。
已尝试但无效的修复方法
我查阅相关资料后,尝试了以下方法的多种组合,但问题仍未解决:
- 使用AWS SDK自带的证书:
Aws.use_bundled_cert!
- 指定自定义证书路径:
Aws.config[:ssl_ca_bundle] = '/usr/local/etc/openssl/cert.pem'
- 按照社区建议,重新安装不带二进制包的Ruby(通过RVM),并更新了系统根证书
相关版本信息
- Ruby: 2.4.2 / 2.5.0(通过RVM安装)
- Aws-Sdk: 3.0.1
- Paperclip: 5.2.1(也尝试了master分支的6.0版本,仅依赖aws-sdk-s3)
- Rails: 5.1.4
- 操作系统: OS X 10.12.6(部署到Heroku时同样出现该问题)
内容的提问来源于stack exchange,提问作者Pascal
相关产品推荐
相关产品推荐

