簡體   English   中英

Shopify + Ubuntu 12.04LTS +法拉第問題=可以使用舊的OpenSSL嗎?

[英]Shopify + Ubuntu 12.04LTS + Faraday issue = OK to use older OpenSSL?

我正在使用Ubuntu 12.04LTS Desktop來開發Shopify應用程序(使用shopify_app gem),我在處理回調URL時遇到了這個問題。

Faraday::Error::ConnectionFailed (Connection reset by peer - SSL_connect)

看看這里和這里的shopify-app-discuss組,似乎問題出在Ubuntu 12.04及其OpenSSL上。 我試圖安裝最新的OpenSSL,但沒有。 發現的另一種選擇是使用不同的舊版OpenSSL,即RVM提供的版本。

$ rvm remove 1.9.3 (or whatever version of ruby you are using)
$ rvm pkg install openssl
$ rvm install 1.9.3 --with-openssl-dir=$rvm_path/usr

現在Shopify App工作正常。 它可以連接到API。 (這個提示可能會幫助其他Ubuntu 12.04用戶!)

所以,我的問題是:這是最好的解決方案嗎? 我有點擔心舊的OpenSSL版本。 它可能存在一些安全問題。 使用它開發應用程序是否安全?

當我部署應用程序(例如Heroku)時,舊的OpenSSL會出現安全問題嗎?

提前致謝!

其他建議對我們不起作用。 具體來說,我們需要強制:SSLv3而不是:TLSv1 (對於股票Ubuntu 12.04.01 Ruby 1.9.3和我們從Passenger PPM使用的股票。)

此外,還需要檢查是否定義了@ssl_options 我從ActiveResource Implementation中復制了一個。

我們在config/initializers/shopify_ssl.rb ,一切都很config/initializers/shopify_ssl.rb

require 'active_resource/connection'

class ActiveResource::Connection
  def apply_ssl_options_with_ssl_version(http)
    apply_ssl_options_without_ssl_version(http)
    return http unless defined?(@ssl_options)
    http.ssl_version = @ssl_options[:ssl_version] if @ssl_options[:ssl_version]
    http
  end
  alias_method_chain :apply_ssl_options, :ssl_version
end

ShopifyAPI::Base.ssl_options = { :ssl_version => :SSLv3 }

雖然最新版本的OpenSSL是尚未發現的安全漏洞的神聖遺產,但我會說你應該在那個特定時刻使用適合你的庫。 沒有沒有安全漏洞的軟件,除非你能影響服務器端升級到與最新SSL版本兼容的東西,否則我擔心你的選擇有限。

使用最新的OpenSSL庫時,您的客戶端很可能嘗試使用TLS 1.2進行連接,這是HTTPS中使用的最新SSL / TLS協議之一。 我們的負載平衡硬件有一個TLS 1.2的已知問題,雖然我自己沒有意識到它,直到我自己獨立地發現了這個錯誤。

我讓其余的運營團隊意識到了這一點,我希望我們能盡快解決這個問題。 在那之前,你可以使用

http.ssl_version = :TLSv1

強迫Ruby使用TLS 1.0。

這是一個如何將此變通方法應用於ActiveResource的示例,這是shopify_api gem在內部使用的gem:

require 'active_resource/connection'

class ActiveResource::Connection
  def apply_ssl_options_with_ssl_version(http)
    apply_ssl_options_without_ssl_version(http)

    http.ssl_version = @ssl_options[:ssl_version] if @ssl_options[:ssl_version]

    http
  end

  alias_method_chain :apply_ssl_options, :ssl_version
end

現在你可以使用了

ShopifyAPI::Base.ssl_options = {:ssl_version => :TLSv1}

解決問題。

你總是使用最新版本的OpenSSL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM