Solución
Utilice OpenSSL::SSL::VERIFY_NONE
para su cliente de Redis.
Acompañante
# 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 })
Motivo
Redis 6 requiere TLS para conectarse. Sin embargo, el soporte de Heroku explicó que administran las solicitudes desde el nivel del enrutador hasta el nivel de la aplicación que involucra certificados autofirmados. Resulta que Heroku finaliza SSL en el nivel del enrutador y las solicitudes se reenvían desde allí a la aplicación a través de HTTP mientras todo está detrás del cortafuegos y las medidas de seguridad de Heroku.
Fuentes
- https://ogirginc.github.io/en/heroku-redis-ssl-error
- https://devcenter.heroku.com/articles/asegurando-heroku-redis#conectando-directamente-a-stunnel