我在Heroku上部署了一个烧瓶应用程序,使用的是Redis高级计划。我得到以下错误:“SSL证书验证失败”。试图修复:
ssl_cert_reqs=None传递给redis-py中的Redis构造函数解决这一问题的办法可以是:
在Heroku的文档中,这可能是一个提示:“为了连接到Redis 6数据库,您必须在Redis客户端的配置中启用TLS”。我不明白这意味着什么。
发布于 2021-12-06 11:44:51
我通过在Heroku配置中将?ssl_cert_reqs=CERT_NONE添加到REDIS_URL的末尾来解决我的问题。
发布于 2020-11-27 22:37:48
您可以通过将ssl_cert_reqs=None降级为Redis 5并将Redis构造函数传递给Redis构造函数,从而禁用Heroku上的TLS证书。
$ heroku addons:create heroku-redis:premium-0 --version 5from redis import ConnectionPool, Redis
import os
connection_pool = ConnectionPool.from_url(os.environ.get('REDIS_URL'))
app.redis = Redis(connection_pool=connection_pool, ssl_cert_reqs=None)我的错误是没有同时做这两件事。
理想的解决方案是解释如何为Redis 6配置TLS认证。
发布于 2021-01-05 14:30:14
文档实际上是不正确的,您必须将SSL设置为verify_none,因为TLS是自动发生的。
来自Heroku的支助:
“我们的数据基础设施使用自签名证书,因此证书可以定期循环.您需要将verify_mode配置变量设置为OpenSSL::SSL::VERIFY_NONE”
我通过将ssl_params设置为verify_none来解决这个问题:
ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }对我来说,它是我配置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 } }
endhttps://stackoverflow.com/questions/65042551
复制相似问题