解決策
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 })
理由
Redis6では接続にTLSが必要です。ただし、Herokuのサポートでは、ルーターレベルから自己署名証明書を含むアプリケーションレベルまでのリクエストを管理していると説明されています。結局のところ、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