Lösning
Använd OpenSSL::SSL::VERIFY_NONE
för 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 })
Orsak
Redis 6 kräver TLS för att ansluta. Men Heroku support förklarade att de hanterar förfrågningar från routernivå till applikationsnivå som involverar självsignerade certifikat. Det visar sig att Heroku avslutar SSL på routernivå och förfrågningar vidarebefordras därifrån till applikationen via HTTP medan allt ligger bakom Herokus brandvägg och säkerhetsåtgärder.
Källor
- https://ogirginc.github.io/en/heroku-redis-ssl-error
- https://devcenter.heroku.com/articles/securing-heroku-redis#connecting-directly-to-stunnel