如何使用 Shrine RemoteUrl 插件绕过 SSL 验证
Posted
技术标签:
【中文标题】如何使用 Shrine RemoteUrl 插件绕过 SSL 验证【英文标题】:How to bypass SSL verification with Shrine RemoteUrl plugin 【发布时间】: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
非常感谢任何帮助。谢谢!
【问题讨论】:
【参考方案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
记录),这行得通吗?以上是关于如何使用 Shrine RemoteUrl 插件绕过 SSL 验证的主要内容,如果未能解决你的问题,请参考以下文章
Shrine Gem Ruby on Rails 无服务器图像处理程序,后台作业
使用 Shrine 和 MiniMagick 将 GIF 转换为 JPEG
“上帝的操作系统” Shrine!既不是 Windows,也不是 Linux