![](/img/trans.png)
[英]Environment variables in /etc/profile not work for HBase on Ubuntu 12.04LTS
[英]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.