小编Dav*_*ard的帖子

Heroku Rails Net::HTTP: OpenSSL::SSL::SSLError: SSL_connect Returned=1 errno=0 state=SSLv3 读取服务器证书 B: 证书验证失败

我有一个在 Heroku 服务器上运行的 Rails 应用程序,但我无法通过 HTTPS 使用 Net::HTTP 与外部服务器进行通信。每当我尝试POST通过 HTTPS 访问外部专有 API时,我收到的错误是:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我已经做了好几个小时的谷歌搜索,以寻找我遇到的问题的答案,但无济于事。这是我的环境:

  • Heroku Dyno 运行 Cedar 14(正在运行 Cedar 10,升级到 Cedar 14 以查看它是否会影响问题 - 不高兴)
  • 导轨 3.2.14rc2
  • 红宝石 2.1.2

“修复”我试过:

  • 运行certifiedgem(实际上似乎有助于通过 Omniauth 和 Google 的 API 进行通信)
  • Monkey-patch 从验证方法列表中删除 SSLv2、SSLv3。当我在 Heroku 服务器上的控制台中尝试此操作时,它对于 GET 方法似乎工作得很好,但是在尝试运行Net::HTTP::Post.new而不是尝试运行时似乎完全忽略了调整Net::HTTP::Get.new
  • 手动覆盖证书文件位置。我已经指定它使用操作系统的授权文件(在 Cedar-14 堆栈上是最新的),但仍然没有骰子。
  • 我还尝试在 Net::HTTP 对象上手动指定要使用但ssl_version="TLSv1_2"没有运气(它甚至一直报告相同的SSLv3相关错误)

在开发中本地运行时,通信似乎工作得很好(我使用了此处建议的RVM …

ruby ssl ruby-on-rails heroku ruby-on-rails-3

5
推荐指数
1
解决办法
2068
查看次数

标签 统计

heroku ×1

ruby ×1

ruby-on-rails ×1

ruby-on-rails-3 ×1

ssl ×1