Rozwiązanie
Użyj OpenSSL::SSL::VERIFY_NONE
dla Twojego klienta 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
Ponownie
Redis.new(url: 'url', driver: :ruby, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
Powód
Redis 6 wymaga połączenia TLS. Jednak obsługa Heroku wyjaśniła, że zarządza żądaniami z poziomu routera do poziomu aplikacji, w tym certyfikatów z podpisem własnym. Okazuje się, że Heroku przerywa SSL na poziomie routera, a żądania są stamtąd przekazywane do aplikacji przez HTTP, podczas gdy wszystko jest za zaporą sieciową Heroku i środkami bezpieczeństwa.
Źródła
- https://ogirginc.github.io/en/heroku-redis-ssl-error
- https://devcenter.heroku.com/articles/securing-heroku-redis#podłączanie-bezpośrednio-do-stunelu