2012-06-29 11 views
8

Używam Ubuntu 12.04LTS Desktop do opracowania aplikacji Shopify (z wykorzystaniem klej shopify_app), i wystąpił ten problem podczas przetwarzania adresu zwrotnego URL.Shopify + Ubuntu 12.04LTS + problem Faradaya = OK, aby użyć starszego OpenSSL?

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

Patrząc na Shopify-app-dyskutować grupę here i tutaj wydaje się, że problem jest z Ubuntu 12.04 i jego OpenSSL. Próbowałem zainstalować najnowszą wersję OpenSSL, ale nic. Jedną z opcji, która polegała na tym, że I found było użycie innego, starszego OpenSSL, takiego, który zapewnia 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 

A teraz aplikacja Shopify działa poprawnie. Może łączyć się z interfejsem API. (Ta wskazówka może pomóc innym użytkownikom Ubuntu 12.04!)

Moje pytanie brzmi: czy to najlepsze rozwiązanie? Trochę niepokoję się starszą wersją OpenSSL. Może mieć pewne problemy z bezpieczeństwem. Czy to bezpieczne, aby rozwijać aplikację?

A kiedy zainstaluję aplikację (np. Heroku), czy wystąpi problem z bezpieczeństwem starszych wersji OpenSSL?

Z góry dzięki!

+0

Jaka jest wersja OpenSSL, która pochodzi z RVM, tak? – InternetSeriousBusiness

+0

Dzięki, to rozwiązało problem. @InternetSeriousBusiness - wersja OpenSSL, którą właśnie zainstalowałem, to 0.9.8 – ndbroadbent

+0

Przepraszam, mówiłam za wcześnie. Teraz otrzymuję ten błąd SSL: SSL_connect zwrócony = 1 errno = 0 stan = SSLv3 odczytać certyfikat serwera B: certyfikat zweryfikować nie powiodło się – ndbroadbent

Odpowiedz

1

Podczas gdy najnowsza wersja OpenSSL jest świętym małżeństwem nie odkrytych jeszcze luk w zabezpieczeniach, powiedziałbym, że powinieneś użyć biblioteki, która pracuje dla ciebie w tym konkretnym momencie. Nie ma oprogramowania bez luk w zabezpieczeniach i jeśli nie możesz wpłynąć na stronę serwera, aby uaktualnić się do kompatybilnego z najnowszymi wersjami SSL, obawiam się, że twoje opcje są ograniczone.

1

Podczas korzystania z najnowszej biblioteki OpenSSL klient najprawdopodobniej próbuje się połączyć przy użyciu protokołu TLS 1.2, jednego z nowszych protokołów SSL/TLS używanych w HTTPS. Nasz sprzęt do równoważenia obciążenia ma znany problem z TLS 1.2, chociaż nie zdawaliśmy sobie z tego sprawy, dopóki samodzielnie nie natknąłem się na ten błąd.

Powiadomiłem resztę zespołu operacyjnego i oczekuję, że naprawimy to tak szybko, jak to możliwe. Do tego czasu, można użyć

http.ssl_version = :TLSv1

zmusić Ruby stosowanie protokołu TLS 1.0 zamiast.

Oto przykład jak zastosować to obejście na ActiveResource, gem, że shopify_api gem używa wewnętrznie:

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 

Teraz można użyć

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

obejścia problemu .

5

Inne sugestie nie działają dla nas. W szczególności musieliśmy wymusić :SSLv3 zamiast :TLSv1. (Dla obu produktów Ubuntu 12.04.01 Ruby 1.9.3 i tego, którego używamy z Pasażera PPM.)

Należy również sprawdzić, czy zdefiniowano @ssl_options. Skopiowałem ten z implementacji ActiveResource.

Wpadliśmy to w config/initializers/shopify_ssl.rb i wszystko jest aksamitny:

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 } 
+0

TO DZIAŁA. Nie mogłem uzyskać innych sugestii za pomocą: TLSv1 działa. To rozwiązanie sprawdziło się w Ubuntu 12.04 i Ruby 1.9.3. Dzięki!! :) –

+0

Ty jesteś, jesteś bohaterem. Proszę przyjąć tę pelerynę. –

Powiązane problemy