Dil*_*wen 5 ssl heroku redis flask
我正在使用 Redis 高级计划在 Heroku 上部署一个 Flask 应用程序。我收到以下错误:“SSL 认证验证失败”。尝试修复:
ssl_cert_reqs=None给Redis构造函数redis-py这个问题的解决方案可能是:
从 Heroku 的文档中,这可能是一个提示:“您必须在 Redis 客户端的配置中启用 TLS 才能连接到 Redis 6 数据库”。我不明白这是什么意思。
小智 9
我通过添加到 Heroku 配置的?ssl_cert_reqs=CERT_NONE末尾来解决我的问题。REDIS_URL
您可以通过降级到 Redis 5 并传递ssl_cert_reqs=None给Redis构造函数来禁用 Heroku 上的 TLS 认证。
$ heroku addons:create heroku-redis:premium-0 --version 5
Run Code Online (Sandbox Code Playgroud)
$ heroku addons:create heroku-redis:premium-0 --version 5
Run Code Online (Sandbox Code Playgroud)
我的错误是没有同时做这两件事。
理想的解决方案是解释如何为 Redis 6 配置 TLS 认证。
这些文档实际上是不正确的,您必须将 SSL 设置为 verify_none,因为 TLS 会自动发生。
来自 Heroku 支持:
“我们的数据基础设施使用自签名证书,因此证书可以定期循环......您需要将 verify_mode 配置变量设置为 OpenSSL::SSL::VERIFY_NONE”
我通过将 ssl_params 设置为 verify_none 解决了这个问题:
ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }
Run Code Online (Sandbox Code Playgroud)
对我来说,这是我配置 redis 的地方(在 sidekiq 初始化程序中):
# config/initializers/sidekiq.rb
Sidekiq.configure_client do |config|
config.redis = { url: ENV['REDIS_URL'], size: 1, network_timeout: 5,
ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }
end
Sidekiq.configure_server do |config|
config.redis = { url: ENV['REDIS_URL'], size: 7, network_timeout: 5,
ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |