Решение
Използвайте OpenSSL::SSL::VERIFY_NONE
за вашия Redis клиент.
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
Redis
Redis.new(url: 'url', driver: :ruby, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
Причина
Redis 6 изисква TLS за свързване. Въпреки това, поддръжката на Heroku обясни, че те управляват заявки от нивото на рутера до нивото на приложението, включващи Self Signed Certs. Оказва се, че 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