Как обойти проверку SSL с помощью плагина Shrine RemoteUrl - PullRequest
0 голосов
/ 04 февраля 2020

Я использую плагин Shrine RemoteUrl в приложении Rails для получения файла (pdf) с удаленного сайта. У этого сайта есть старый сертификат https, и я получаю некоторые ошибки, подобные этой:

{:media=>["download failed: SSL_connect returned=1 errno=0 state=error: dh key too small"]}

Я не могу изменить конфигурацию удаленного сайта, поэтому я думаю, что мне нужно обойти проверку SSL. Но не могу найти способ сделать это.

Я пытаюсь сделать это в файле инициализатора Shrine, но я не знаю, как передать правильные параметры в Down :: Http. Down :: Http backend осуществляет загрузку с использованием гема http.rb (и вы можете отключить проверку сертификата с ним)

Shrine.plugin :remote_url, max_size: 20*1024*1024, downloader: -> (url, max_size:, **options) do
  Down::Http.download(url, max_size: max_size, **options) do |http|
    http.follow(max_hops: 2).timeout(connect: 2, read: 2)
  end
end

Любая помощь высоко ценится. Спасибо!

1 Ответ

0 голосов
/ 04 февраля 2020

Down::Http.download перенаправляет все параметры в http.rb, поэтому вы можете передать тот же параметр :ssl_context:

ctx = OpenSSL::SSL::SSLContext.new
ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE

Down::Http.download(url, max_size: max_size, ssl_context: ctx, **options) do |http|
  http.follow(max_hops: 2).timeout(connect: 2, read: 2)
end
...