【问题标题】:How to bypass SSL verification with Shrine RemoteUrl plugin如何使用 Shrine RemoteUrl 插件绕过 SSL 验证
【发布时间】:2020-05-20 11:57:04
【问题描述】:

我在 Rails 应用程序中使用 Shrine RemoteUrl 插件从远程站点获取一些文件 (pdf)。 这个网站有一个旧的 https 证书,我遇到了一些这样的错误:

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

我无法修改远程站点的 conf,所以我认为我需要绕过 SSL 验证。 但是找不到办法。

我正在尝试在 Shrine 初始化程序文件中执行此操作,但我不知道如何将正确的选项传递给 Down::Http。 Down::Http 后端使用 http.rb gem 实现下载(你可以用它Disabling Certificate Verification

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

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: ruby-on-rails shrine


    【解决方案1】:

    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
    

    【讨论】:

    • 谢谢,但我仍然遇到同样的错误。我不明白为什么...该代码适用于另一个域,但不适用于我的远程站点。明天再试。
    • 不起作用。 SSL 仍处于检查状态。你不觉得上面代码中http.follow下的选项应该是http.something吗?
    • 当您尝试直接使用 http.rb 时(通过 :ssl_context 记录),这行得通吗?
    猜你喜欢
    • 2021-02-08
    • 2014-07-07
    • 2019-09-29
    • 1970-01-01
    • 2021-06-22
    • 2010-11-09
    • 2017-08-29
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多