Løsning
Brug OpenSSL::SSL::VERIFY_NONE
til din Redis-klient.
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 })
Årsag
Redis 6 kræver TLS for at oprette forbindelse. Heroku-support forklarede dog, at de administrerer anmodninger fra routerniveauet til applikationsniveauet, der involverer Self Signed Certs. Det viser sig, at Heroku afslutter SSL på routerniveau, og anmodninger videresendes derfra til applikationen via HTTP, mens alt er bag Herokus Firewall og sikkerhedsforanstaltninger.
Kilder
- https://ogirginc.github.io/en/heroku-redis-ssl-error
- https://devcenter.heroku.com/articles/securing-heroku-redis#connecting-directly-to-stunnel