Herkou Redis - 证书验证失败(证书链中的自签名证书)

Herkou Redis - certificate verify failed (self signed certificate in certificate chain)

我在我的一个副项目中使用 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 计划的工作方式有根本不同吗?

我在 rails 上使用 ruby,如果有帮助,我会使用 heroku redis 部署在 heroku 上。

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

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

来自 Heroku 支持:

"Our data infrastructure uses self-signed certificates so certificates can be cycled regularly... you need to set the verify_mode configuration variable to OpenSSL::SSL::VERIFY_NONE"

根据 Heroku 的 docs

你需要

Create an initializer file named config/initializers/redis.rb containing:

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

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

Create an initializer file named config/initializers/sidekiq.rb containing:

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