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

0h4hbjxa  于 2022-10-31  发布在  Redis
关注(0)|答案(3)|浏览(273)

我已经使用heroku redis有一段时间了,现在在我的一个副业项目上。我目前使用它做3件事
1.它是我存储Firebase证书的地方
1.它用于缓存站点上的数据
1.它用于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上。

evrscar2

evrscar21#

实际上,当你在Heroku应用上安装Heroku Redis时,它会为你创建2个配置变量:REDIS_TLS_URL和REDIS_URL。
这些文档实际上是不正确的,您必须将SSL设置为verify_none,因为TLS会自动发生。
来自Heroku的支持:
“我们的数据基础架构使用自签名证书,因此证书可以定期循环...您需要将verify_mode配置变量设置为OpenSSL::SSL::VERIFY_NONE”

gg58donl

gg58donl2#

根据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
0lvr5msh

0lvr5msh3#

@ricks的回答让我完成了90%的工作,但是对于像我这样在Heroku的Redis中使用Rails.cache的人来说,你不需要初始化器,只需要生产中的这一行配置即可。rb:

config.cache_store = :redis_cache_store, { url: ENV['REDIS_URL'], ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }

相关问题