8

Ubuntu 12.04LTS デスクトップを使用して Shopify アプリを開発しています (shopify_app gem を使用)。コールバック URL を処理するときにこの問題に遭遇しました。

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

shopify-app-discuss グループのこちらとこちらを見ると、問題は Ubuntu 12.04 とその OpenSSL にあるようです。最新の OpenSSL をインストールしようとしましたが、何もインストールされませんでした。私が見つけた1 つの代替手段は、RVM が提供する別の古い OpenSSL を使用することでした。

$ 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 アプリは正常に動作しています. APIに接続できます。(このヒントは、他の Ubuntu 12.04 ユーザーに役立つかもしれません!)

だから、私の質問は次のとおりです。これは最善の解決策ですか? OpenSSL の古いバージョンが少し気になります。セキュリティ上の問題がある可能性があります。これでアプリを開発しても安全ですか?

また、アプリ (Heroku など) をデプロイすると、古い OpenSSL でセキュリティ上の問題が発生する可能性はありますか?

前もって感謝します!

4

4 に答える 4

5

他の提案はうまくいきませんでした。具体的には、:SSLv3代わりに 強制する必要があり:TLSv1ました。(在庫の Ubuntu 12.04.01 Ruby 1.9.3 と Passenger PPM から使用するものの両方)

@ssl_optionsまた、定義されていることを確認する必要があります。ActiveResource実装からコピーしました。

これをドロップする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 }
于 2012-11-01T18:49:34.293 に答える
1

最新の OpenSSL ライブラリを使用している場合、クライアントは、HTTPS で使用されている最新の SSL/TLS プロトコルの 1 つである TLS 1.2 を使用して接続しようとしている可能性が最も高くなります。私たちのロード バランシング ハードウェアには TLS 1.2 に関する既知の問題がありますが、私自身がこのバグに個別に遭遇するまでは認識していませんでした。

オペレーション チームの残りのメンバーにこのことを知らせました。できるだけ早くこれを修正する予定です。それまでは、

http.ssl_version = :TLSv1

代わりに Ruby に TLS 1.0 の使用を強制します。

shopify_api以下は、 gem が内部的に使用する gem である ActiveResource にこの回避策を適用する方法の例です。

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}

問題を回避します。

于 2012-10-31T18:19:41.550 に答える
1

OpenSSL の最新バージョンは、まだ発見されていないセキュリティ ホールの聖なる結婚ですが、その特定の瞬間に機能するライブラリを使用する必要があると思います。セキュリティ ホールのないソフトウェアはありません。サーバー側に影響を与えて、最新の SSL バージョンと互換性のあるものにアップグレードできない限り、オプションは限られています。

于 2012-08-08T11:57:30.950 に答える
0

常に最新バージョンの OpenSSL を使用する必要があります。

于 2012-08-08T11:53:51.793 に答える