使用 ruby​​gem 访问 Shopify API 时出现 SSL_connect 错误

2023-12-13

我在使用 shopify_api gem 访问 Shopify API 时遇到问题。

发生的情况如下:

>> require "shopify_api" #=> false
>> ShopifyAPI::Base.site = "https://username:[email protected]/admin"
=> "https://username:[email protected]/admin"
>> products = ShopifyAPI::Product.find(:all)
Errno::ECONNRESET: Connection reset by peer - SSL_connect
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `block in connect'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:744:in `start'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1284:in `request'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1026:in `get'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activeresource-3.2.8/lib/active_resource/connection.rb:113:in `block in request'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.8/lib/active_support/notifications.rb:123:in `block in instrument'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.8/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.8/lib/active_support/notifications.rb:123:in `instrument'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activeresource-3.2.8/lib/active_resource/connection.rb:110:in `request'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/shopify_api-3.0.1/lib/active_resource/connection_ext.rb:13:in `request_with_detailed_log_subscriber'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activeresource-3.2.8/lib/active_resource/connection.rb:80:in `block in get'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activeresource-3.2.8/lib/active_resource/connection.rb:218:in `with_auth'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activeresource-3.2.8/lib/active_resource/connection.rb:80:in `get'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activeresource-3.2.8/lib/active_resource/base.rb:901:in `find_every'
    from /Users/zubin/.rvm/gems/ruby-1.9.3-p194/gems/activeresource-3.2.8/lib/active_resource/base.rb:813:in `find'
    from (irb):21
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'

认为这是 ruby​​ 的 openssl 绑定的问题,我使用 RVM 安装了 openssl 并重新安装了 ruby​​:

rvm pkg install openssl
rvm reinstall 1.9.3-p194 --with-openssl-dir=~/.rvm/usr

但这没有帮助。

所以我尝试用普通的方式连接NET::HTTPS并且能够连接到另一个网站,但不能连接到shopify。

>> require "net/https" #=> false
>> require "uri" #=> false
>> uri = URI.parse("https://google.com/") #=> #<URI::HTTPS:0x007fa27bb243f8 URL:https://google.com/>
>> http = Net::HTTP.new(uri.host, uri.port) #=> #<Net::HTTP google.com:443 open=false>
>> http.use_ssl = true #=> true
>> http.verify_mode = OpenSSL::SSL::VERIFY_NONE #=> 0
>> http.start { |agent| p agent.get(uri.path).read_body }
"<HTML><HEAD><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n<TITLE>301 Moved</TITLE></HEAD><BODY>\n<H1>301 Moved</H1>\nThe document has moved\n<A HREF=\"https://www.google.com/\">here</A>.\r\n</BODY></HTML>\r\n"
=> "<HTML><HEAD><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n<TITLE>301 Moved</TITLE></HEAD><BODY>\n<H1>301 Moved</H1>\nThe document has moved\n<A HREF=\"https://www.google.com/\">here</A>.\r\n</BODY></HTML>\r\n"
>> uri = URI.parse("https://mysite.myshopify.com/admin/")
=> #<URI::HTTPS:0x007fa27d1f5e38 URL:https://mysite.myshopify.com/admin/>
>> http = Net::HTTP.new(uri.host, uri.port) #=> #<Net::HTTP mysite.myshopify.com:443 open=false>
>> http.use_ssl = true #=> true
>> http.verify_mode = OpenSSL::SSL::VERIFY_NONE #=> 0
>> http.start { |agent| p agent.get(uri.path).read_body }
Errno::ECONNRESET: Connection reset by peer - SSL_connect
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `block in connect'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:744:in `start'
    from (irb):18
    from /Users/zubin/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'

所以这就排除了我的 ruby​​/openssl 设置。有什么想法导致 SSL_connect 错误吗?


最有可能的是,您的客户端正在尝试使用以下方式进行连接TLS 1.2,最近的一项SSL/TLS使用的协议HTTPS。我们的负载平衡硬件存在一个已知问题TLS 1.2,尽管直到我自己独立地偶然发现了这个错误之前我们才意识到这一点。

我已经让运营团队的其他成员意识到了这一点,我希望我们会尽快解决这个问题。在那之前,您可以使用

http.ssl_version = :TLSv1

强迫Ruby to use TLS 1.0反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ruby​​gem 访问 Shopify API 时出现 SSL_connect 错误 的相关文章

  • 在尝试解析字符串之前检查它是否是有效的 json?

    在 Ruby 中 有没有办法在尝试解析字符串之前检查它是否是有效的 json 例如 从其他一些 url 获取一些信息 有时它返回 json 有时它可能返回一个垃圾 这不是有效的响应 My code def get parsed respon
  • Chrome AutoSelectCertificateForUrls 主题过滤器

    目前遇到与此相同的问题但未得到答复从 2016 年 8 月开始 希望在另一个字段 例如主题 上过滤自动选择的证书 Chromium 文档 https www chromium org administrators policy list 3
  • gRPC + SSL = 未满足的链接错误

    我一直在尝试对我的 gRPC 服务进行 SSL 化 在纯文本模式下工作正常 注意 这是在商业环境中 这限制了我的一些选择 例如开发环境和部署平台 我跟着安全 md https github com grpc grpc java blob m
  • 具有非阻塞或多线程功能的 Ruby Tcp Server 类

    找不到任何可以帮助创建非阻塞 多线程服务器的 gem 或类 哪里可以找到 The Ruby 文档 http ruby doc org core classes Socket html M002091关于套接字有一些很好的例子 使用该页面中的
  • 无法删除 Google 管理的 SSL 证书

    我无法删除 Google 管理的 SSL 证书 当我删除它时 它又会回来 该证书不被任何其他服务使用 我可以删除其他证书 但它们不会再回来 我也有这个问题 我在文档中发现只有在以下情况下才能删除证书 仅当没有其他资源 例如目标 HTTPS
  • Ruby“定义”?操作员工作错误?

    所以 我们有代码 class Foo def bar puts Before existent defined some variable puts Before not existent defined nonexistent varia
  • 在脚本完成之前使用 Ruby CGI 返回响应?

    任何人都知道如何在 Ruby 中发送 CGI 响应beforeCGI脚本执行完毕 我正在创建一个即发即忘的 HTTP API 我希望客户端通过 HTTP 向我推送数据并让响应成功返回 并且then它混合数据并进行一些处理 客户端无需等待响应
  • 为什么python请求默认不使用系统ssl证书?

    背景 我正在尝试Ubuntu 18 04 1 LTS 使用 next 安装自签名证书 cp rf my crt usr local share ca certificates update ca certificates 一切正常 因为现在
  • RVM 和 OpenSSL 的问题

    尝试为同事设置一台新 MacBook 进展不顺利 首先我安装 OpenSSL Heathers MacBook Pro heather rvm pkg install openssl Fetching openssl 1 0 1c tar
  • 从 Rails 获取所有模型的列表[重复]

    这个问题在这里已经有答案了 我需要一个包含所有模型 类名 的列表 这些模型末尾有模式 Cube 例子 我所有的模型 ModelFoo ModelBar ModelBarCube Mode2BarCube 我需要的 ModelBarCube
  • RubyMine 无法识别 Rails 应用程序

    我有一个关于使用从目录打开方法将 Rails 应用程序导入 RubyMine 的问题 我的计算机上有两个不同的 Rails 应用程序 但 RubyMine 只将其中一个识别为 Rails 应用程序 而将另一个识别为普通目录 这是一个问题 因
  • Readline、输入记录分隔符和 Ruby

    在 Ruby 中 我希望读取数据 直到到达分隔符或文件末尾 我发现通过重新定义这是可能的 or the INPUT RECORD SEPARATOR到我的分隔符 然而 考虑到 Ruby 语言中的所有 功能 更改全局值来执行此操作似乎很笨拙
  • 使用 RSpec 测试 rake 任务后清除数据库

    我正在尝试使用 rspec 测试我的 rake 任务 它运行良好 但问题是记录随后不会被删除 我已经把config use transactional fixtures true在配置文件中没有影响 在其他测试中它运行良好 这是我的代码 r
  • 在新的 Apple Silicon 架构上运行 Ruby、Node、Python 和 Docker? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何获得在 Apple Silicon 架构上运行的 Ruby Python 和 Node js 开发环境 虚拟化软件怎么样 码头工人
  • Rails redirect_to 页面部分

    对于正常的重定向 它会是这样的redirect to root path 我如何重定向到类似的内容 localhost 3000 contact 我不仅想重定向到根 还想重定向到根 还想重定向到根页面的联系部分 这可能吗 这应该有效 red
  • 安全导航相当于 Rails 尝试哈希值

    在 Rails 中 你可以这样做hash try key 这有帮助如果hash是潜在的nil 是否有使用新的 Ruby 2 3 安全导航运算符的等效版本 with 不等同于 Rails 的try 但你可以使用 对于哈希值 就用用吧 没什么特
  • Rails 从视图中调用操作

    希望这里有一个简单的问题 但我似乎无法找到答案 刚刚开始使用 RoR 但之前来自 ASP MVC 我在渲染部分视图时遇到问题 其局部变量不一定与主视图的变量相关联 例如 对于一个博客 我试图渲染一个链接到存档的侧边栏 def sidebar
  • Rails 3.2.3 命名空间控制器被同名的全局控制器覆盖

    当全局应用程序控制器首先加载时 命名空间应用程序控制器在加载该命名空间内的页面时不会加载 应用程序控制器如下所示 class ApplicationController lt ActionController Base protect fr
  • MacOS 每秒唤醒次数错误

    构建 Rails 应用程序 ruby 2 4 0p0 Rails 5 1 4 并使用我的 Macbook Air MacOS High Sierra 10 13 2 进行本地测试 我不断遇到此问题 过去 241 秒内有 45001 次唤醒
  • 需要帮助获取嵌套的 ruby​​ 哈希层次结构

    我有哈希深层嵌套哈希 我希望每个键的层次结构 父到子 作为数组 例如 hash properties gt one gt extra headers gt type gt object type1 gt object2 entity gt

随机推荐

  • php cookie 不更新

    我需要更新一个cookie 我在通过 ajax 调用的 php 文件中执行此操作 这是代码 setcookie items POST id 事实上 如果我写的话 cookie不会更新print r COOKIE items 在 setcoo
  • 从字节数组运行程序而不创建临时文件。 C#

    我在 IIS 服务器 MSSQL 上存储了许多 exe 文件 其中包含报告和对服务器上文件的访问权限 这些文件将在周日更改 连接到 SQL Server 并选择一个 exe 文件后 我正在下载 在 SQL 中选择 现在我有一个分配给变量的字
  • 计算移动平均线 MySQL?

    再会 我使用以下代码来计算 9 天移动平均线 SELECT SUM close FROM tbl WHERE date lt 2002 07 05 AND name id 2 ORDER BY date DESC LIMIT 9 但它不起作
  • 使用带有多选标志的 GetOpenFileName() 时如何获取选定文件的列表?

    我尝试过谷歌搜索 但人们似乎有同样的问题 我们无法获得所选文件的列表 这是一段简单的工作代码 与我使用的类似 OPENFILENAME ofn sizeof ofn wchar t file 1024 file 0 0 ofn lpstrF
  • 访问 Glass 上的后置摄像头

    我查遍了api stackoverflow和google 没有找到任何东西 API中有没有办法访问面向眼睛的相机 我希望能够判断用户的眼睛是睁着还是闭着 这个版本的 GDK 可以实现吗 这就是内置眨眼拍照应用程序正在做的事情吗 AFAIK
  • 数据库事务是否可以防止竞争条件?

    我并不完全清楚数据库系统中的事务是做什么的 我知道它们可以用来完全回滚更新列表 例如 从一个帐户中扣除钱并将其添加到另一个帐户中 但这就是它们所做的一切吗 具体来说 它们可以用来防止竞争条件吗 例如 Java JPA example em
  • 如何知道lambda函数本身的事件源

    我想知道函数中lambda函数的事件源 我想要做的是使用某些 AWS 服务 CloudWatch S3 Step 函数等 中的一个 lambda 函数 并根据服务更改其行为 上下文对象 函数的参数之一 包含有关 lambda 函数的信息 但
  • Java 易失性引用与 AtomicReference

    有什么区别吗volatile对象引用和AtomicReference如果我只想使用get and set 方法来自AtomicReference 简短的回答是 不 来自java util concurrent atomic包文档 去引用 原
  • GDK 图片意图卡在点击接受上

    今天我的 Glass 应用程序上的图片功能停止工作 昨天还好好的 但现在卡在了 点击接受图片 上 我认为这可能与它处理图片和取景器的新方式 至少对我来说 有关 我在玻璃开发者网站上找到的内容已被弃用并且不起作用 我的希望 信念是 新想法是为
  • java中什么时候使用垃圾收集器?

    据我所知 GC仅在JVM需要更多内存时使用 但我不确定 所以 请有人建议这个问题的答案 据我了解 Java 的垃圾收集算法非常复杂 而且并不那么简单 此外 GC 不仅有多种算法可供使用 还可以在 VM 启动时通过传递给 JVM 的参数来选择
  • 您可以将图像“流式传输”到 ffmpeg 来构建视频,而不是将它们保存到磁盘吗?

    我最近的工作涉及以编程方式制作视频 在 python 中 典型的工作流程如下所示 import subprocess Image ImageDraw for i in range frames per second video durati
  • 在php中同时发布和获取

    您对我的问题有什么建议吗 我需要同时使用 get 和 post 获取是因为我需要输出用户输入的内容 并发布 因为我需要访问与该输入相关的 mysql 数据库 它看起来像这样
  • 相当于 Java 中的 CryptoStream .NET?

    我有一个 Visual Basic 中的加密字符串 NET 2008中 加密和解密的函数如下 Imports System Security Cryptography Public Shared Function Encriptar ByV
  • Django Ajax 表单提交错误地重定向到另一个页面

    当我在Django中使用ajax提交评论表单时 页面将重定向到空白页面 显示成功数据 status success msg 添加成功 但不停留在当前页面 我希望页面停留在当前页面并向我显示新评论 这是我的 update comment 视图
  • 当我在 Android 设备上执行“pm”时,为什么会收到分段错误错误?

    我的设备 htcg14 已root 我可以在模拟器上执行 pm 但我的设备无法工作 在我执行 su 之前 它工作正常 shell android pm usage pm list packages f d e s e u FILTER pm
  • 如何在 Android sqlite 中连接列

    我可以在 Android sqlite 中连接两个或更多列吗 例如select columna columnb as columnc from table Try select columna columnb as columnc from
  • 为什么我的 html 不显示从数据库中获取的特殊字符

    我将其包含在我的 php 文件的顶部 我这样做是因为我的 file php 没有在 html 文件中或从数据库查询的数据中显示 或 在我放置 header Content Type text html charset UTF 8 后我的 h
  • Java 格式化剪贴板

    我在尝试弄清楚如何在保存到系统剪贴板时保留 Java 程序中的文本格式时遇到问题 它不适用于 Microsoft 的写字板或 Lotus Symphony 等软件 相反 如果我在 Word 中创建一个格式化字符串并复制它 那么它可以正常用于
  • 在python中将变量写入txt文件的新行

    从其他帖子中 我了解到 n 在添加到 txt 文件时表示新行 我正在尝试这样做 但是当属性位于新行之前时 我无法找出正确的语法 我正在尝试的代码是这样的 for item in list with open file txt w as at
  • 使用 ruby​​gem 访问 Shopify API 时出现 SSL_connect 错误

    我在使用 shopify api gem 访问 Shopify API 时遇到问题 发生的情况如下 gt gt require shopify api gt false gt gt ShopifyAPI Base site https us