2012-06-29 17 views
8

Tôi đang sử dụng Ubuntu 12.04LTS Desktop để phát triển ứng dụng Shopify (sử dụng gem gem shopify_app) và tôi gặp sự cố này khi xử lý URL gọi lại.Shopify + Ubuntu 12.04LTS + Sự cố Faraday = OK để sử dụng OpenSSL cũ hơn?

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

Nhìn vào nhóm shopify-app-thảo luận here và ở đây, có vẻ như vấn đề là với Ubuntu 12.04 và OpenSSL của nó. Tôi đã cố cài đặt OpenSSL mới nhất, nhưng không có gì. Một thay thế mà tôi found là sử dụng một OpenSSL khác, cũ hơn, mà RVM cung cấp.

$ 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 

Và bây giờ ứng dụng Shopify đang hoạt động tốt. Nó có thể kết nối với API. (Mẹo này có thể giúp người dùng Ubuntu 12.04 khác!)

Vì vậy, câu hỏi của tôi là: Đây có phải là giải pháp tốt nhất không? Tôi hơi lo ngại về phiên bản OpenSSL cũ hơn. Nó có thể có một số vấn đề an ninh. Có an toàn để phát triển ứng dụng với điều này không?

Và khi tôi triển khai ứng dụng (ví dụ: Heroku), sẽ có vấn đề về bảo mật với OpenSSL cũ hơn không?

Cảm ơn trước!

+0

gì các phiên bản OpenSSL mà đi kèm với RVM, dù sao? – InternetSeriousBusiness

+0

Cảm ơn, điều này đã giải quyết được vấn đề cho tôi. @InternetSeriousBusiness - phiên bản OpenSSL mà tôi vừa cài đặt là 0.9.8 – ndbroadbent

+0

Xin lỗi, đã nói quá sớm. Bây giờ tôi nhận được lỗi SSL này: SSL_connect trả về = 1 errno = 0 state = SSLv3 đọc chứng chỉ máy chủ B: chứng chỉ xác minh không thành công – ndbroadbent

Trả lời

1

Trong khi phiên bản mới nhất của OpenSSL là một hôn nhân thiêng liêng của các lỗ hổng bảo mật chưa được khám phá, tôi muốn nói rằng bạn nên sử dụng thư viện phù hợp với bạn tại thời điểm cụ thể đó. Không có phần mềm nào không có lỗ hổng bảo mật và trừ khi bạn có thể ảnh hưởng đến phía máy chủ để nâng cấp lên một cái gì đó tương thích với các phiên bản SSL mới nhất, tôi e rằng các tùy chọn của bạn bị hạn chế.

1

Khi sử dụng thư viện OpenSSL mới nhất, khách hàng của bạn có nhiều khả năng đang cố gắng kết nối bằng TLS 1.2, một trong các giao thức SSL/TLS mới được sử dụng trong HTTPS. Phần cứng cân bằng tải của chúng tôi có một vấn đề đã biết với TLS 1.2, mặc dù chúng tôi không biết về nó cho đến khi tôi tự mình tình cờ gặp lỗi này.

Tôi đã thực hiện phần còn lại của nhóm Điều hành biết điều này và tôi hy vọng chúng tôi sẽ sửa lỗi này càng sớm càng tốt. Cho đến lúc đó, bạn có thể sử dụng

http.ssl_version = :TLSv1

để buộc Ruby để sử dụng TLS 1.0 để thay thế.

Dưới đây là một ví dụ về làm thế nào để áp dụng workaround này để ActiveResource, viên ngọc rằng shopify_api đá quý sử dụng trong nội bộ:

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 

Bây giờ bạn có thể sử dụng

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

để làm việc xung quanh vấn đề .

5

Các đề xuất khác không phù hợp với chúng tôi. Cụ thể, chúng tôi cần phải buộc :SSLv3 thay vì :TLSv1. (Đối với cả cổ phiếu Ubuntu 12.04.01 Ruby 1.9.3 và mã chúng tôi sử dụng từ PPM Hành khách.)

Ngoài ra, cần phải kiểm tra @ssl_options. Tôi đã sao chép dữ liệu từ Triển khai ActiveResource.

Chúng tôi giảm này trong config/initializers/shopify_ssl.rb và mọi thứ đều peachy:

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

CÁC CÔNG TRÌNH NÀY. Tôi đã không thể nhận được các đề xuất khác bằng cách sử dụng: TLSv1 hoạt động. Giải pháp này làm việc cho tôi trên Ubuntu 12.04 và Ruby 1.9.3. Cảm ơn!! :) –

+0

Bạn thưa bạn, là một anh hùng. Vui lòng chấp nhận mũi này. –

Các vấn đề liên quan