4

我在我的一个业余项目中使用 heroku redis 已经有一段时间了。我目前将它用于 3 件事

  1. 它是我存储 Firebase 证书的地方
  2. 它用于缓存站点上的数据
  3. 它用于 rails sidekiq 作业

最近,我的 heroku 使用率上升了,我不得不将其更改为使用 heroku redis 高级计划。从那以后,我一直在error: SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain)不知何故。一切都保持不变,但错误开始突然冒出来。

heroku-redis 高级计划的工作方式与基本的 heroku-redis 计划有根本的不同吗?

我正在使用 ruby​​ on rails,如果有帮助的话,使用 heroku redis 部署在 heroku 上。

4

2 回答 2

2

根据 Heroku 的文档

你需要

创建一个名为 config/initializers/redis.rb 的初始化文件,其中包含:

$redis = Redis.new(url: ENV["REDIS_URL"], ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })

此外,如果您在尝试使用 sidekiq 时遇到此问题:

创建一个名为 config/initializers/sidekiq.rb 的初始化文件,其中包含:

Sidekiq.configure_server do |config|
  config.redis = { ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }
end

Sidekiq.configure_client do |config|
  config.redis = { ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }
end
于 2021-08-19T21:23:48.987 回答
2

实际上,当您在 heroku 应用上安装 Heroku Redis 时,它会为您创建 2 个配置变量:REDIS_TLS_URL 和 REDIS_URL。

文档实际上是不正确的,您必须将 SSL 设置为 verify_none 因为 TLS 会自动发生。

来自 Heroku 的支持:

“我们的数据基础设施使用自签名证书,因此可以定期循环使用证书……您需要将 verify_mode 配置变量设置为 OpenSSL::SSL::VERIFY_NONE”

于 2021-02-19T22:54:55.157 回答