gpt4 book ai didi

ruby-on-rails - 如何在 Sidekiq 上为 Redis 6 启用 TLS?

转载 作者:行者123 更新时间:2023-12-03 16:09:01 25 4
gpt4 key购买 nike

问题
在我的 Ruby on Rails 应用程序中,我不断收到下面的错误 Heroku Redis高级 0 附加组件:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain)


Heroku Redis documentation提到我需要在我的 Redis 客户端配置中启用 TLS 才能连接到 Redis 6 数据库。为了实现这一点,我阅读了关于 redis-rb 的 SSL/TLS 支持文档。 .我的理解是;我需要分配 ca_file , certkey对于 Redis.new#ssl_params .问题是如何为 Redis 或通过 Heroku 上的 Sidekiq 设置这些?
更新
更新 3:Heroku 支持提供了解决问题的答案。
更新 2:创建 Heroku 支持票并等待响应。
更新 1: Asked关于 Sidekiq 的 Github 问题,并被建议去写 Heroku 支持。当我得到答案时会更新这个问题。

相关信息
我已验证该应用程序在加载项为以下任一情况时可以正常工作:
  • Redis 6 的爱好开发
  • Redis 5 的溢价 0

  • 版本:
  • ruby – 3.0.0p0
  • Ruby on Rails – 6.1.1
  • Redis – 6.0
  • redis-rb – 4.2.5
  • Sidekiq – 6.2.1
  • Heroku 堆栈 – 20

  • 一些帮助我缩小问题范围的链接:
  • https://bibwild.wordpress.com/2020/11/24/are-you-talking-to-heroku-redis-in-cleartext-or-ssl/
  • https://mislav.net/2013/07/ruby-openssl/
  • 最佳答案

    解决方案
    使用OpenSSL::SSL::VERIFY_NONE为您的 Redis 客户端。
    西德基克

    # 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
    雷迪斯
    Redis.new(url: 'url', driver: :ruby, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
    原因
    Redis 6 需要 TLS 才能连接。然而,Heroku 支持解释说,他们管理从路由器级别到涉及自签名证书的应用程序级别的请求。事实证明,Heroku 在路由器级别终止 SSL,请求通过 HTTP 从那里转发到应用程序,而一切都在 Heroku 的防火墙和安全措施之后。

    来源
  • https://ogirginc.github.io/en/heroku-redis-ssl-error
  • https://devcenter.heroku.com/articles/securing-heroku-redis#connecting-directly-to-stunnel
  • 关于ruby-on-rails - 如何在 Sidekiq 上为 Redis 6 启用 TLS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65834575/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com