Faraday 在调用其中一个应用程序 API 时随机抛出错误 "SSL_write:: shutdown while in init"
Faraday is throwing an error "SSL_write:: shutdown while in init" randomly while calling one of Application API
我有两个主要应用程序(比如 App1、App2)位于不同的物理盒子中。每个在各自的盒子上都有自己的微服务。现在,我正在从 App1 调用一个 API,该 API 属于另一个盒子上为 App2 提供的微服务之一。它是一个 POST API ,它将 File 和一些其他数据作为输入。我随机遇到以下问题
SSL_write:: shutdown while in init
虽然如果两个应用程序存在于同一个盒子中,则永远不会遇到这个问题。
OpenSSL 版本为
OpenSSL 1.0.2k-fips
我正在拨打的电话是通过
Faraday Gem (0.9.1)
App1 基于
Ruby 1.8.7 with Rails 2.3.2
This site 表示这是 OpenSSL 上的一个错误,它是在 1.0.2b 版本中引入的,并在 1.0.2n 上解决了。虽然我在 6 上,但我没有可用于更新的 1.0.2n 版本。可用的最高版本是 1.0.2k。
有什么方法可以升级它,或者有什么其他方法可以解决这个问题。
我看到了失败的模式。当以下所有条件都为真时发生故障:
- 客户端 ruby 1.8.7
- 打开 SSL 版本 1.0.2k
- 客户端和服务器在两个不同的盒子里
如果以上任一情况都不成立,则问题不会出现。
解决这个问题的理想方法是升级 OpenSSL(这不适用于我使用的 OS-RHEL7)或升级 Ruby 版本(不可行)或带来同一个盒子上的两个应用程序(同样不可行)。所以剩下的修复是改变客户端。
我用于此问题的修复是使用 Curl 而不是通过 Faraday Gem.
进行调用
我有两个主要应用程序(比如 App1、App2)位于不同的物理盒子中。每个在各自的盒子上都有自己的微服务。现在,我正在从 App1 调用一个 API,该 API 属于另一个盒子上为 App2 提供的微服务之一。它是一个 POST API ,它将 File 和一些其他数据作为输入。我随机遇到以下问题
SSL_write:: shutdown while in init
虽然如果两个应用程序存在于同一个盒子中,则永远不会遇到这个问题。
OpenSSL 版本为
OpenSSL 1.0.2k-fips
我正在拨打的电话是通过
Faraday Gem (0.9.1)
App1 基于
Ruby 1.8.7 with Rails 2.3.2
This site 表示这是 OpenSSL 上的一个错误,它是在 1.0.2b 版本中引入的,并在 1.0.2n 上解决了。虽然我在 6 上,但我没有可用于更新的 1.0.2n 版本。可用的最高版本是 1.0.2k。
有什么方法可以升级它,或者有什么其他方法可以解决这个问题。
我看到了失败的模式。当以下所有条件都为真时发生故障:
- 客户端 ruby 1.8.7
- 打开 SSL 版本 1.0.2k
- 客户端和服务器在两个不同的盒子里
如果以上任一情况都不成立,则问题不会出现。
解决这个问题的理想方法是升级 OpenSSL(这不适用于我使用的 OS-RHEL7)或升级 Ruby 版本(不可行)或带来同一个盒子上的两个应用程序(同样不可行)。所以剩下的修复是改变客户端。
我用于此问题的修复是使用 Curl 而不是通过 Faraday Gem.
进行调用