2010-10-27 6 views
6

मैं एक HTTPS वेब सेवा तक पहुंचने का प्रयास कर रहा हूं जो रूबी EventMachine का उपयोग कर SSL प्रमाणपत्र प्रमाणीकरण का उपयोग करता है लेकिन मुझे इसे काम नहीं मिल रहा है। ऊपर आउटपुट <SSL_incomp> उठाया RuntimeError संदेश के बाद चल रहा हैरूबी EventMachine के साथ काम करने के लिए मैं SSL क्लाइंट प्रमाण पत्र के साथ एक HTTPS अनुरोध कैसे प्राप्त करूं?

require 'rubygems' 
require 'em-http' 

EventMachine.run do 
    url = 'https://foobar.com/' 
    ssl_opts = {:private_key_file => '/tmp/private.key', 
    :cert_chain_file => '/tmp/ca.pem', 
    :verify_peer => false} 
    http = EventMachine::HttpRequest.new(url).get :ssl => ssl_opts 

    http.callback do 
    p http.response_header.status 
    p http.response_header 
    p http.response 
    EventMachine.stop 
    end 

    http.errback do 
    EventMachine.stop 
    fail "Request failed" 
    end 
end 

:

मैं इसे खत्म-टू-एंड परीक्षण करने के लिए निम्नलिखित सरल कोड ब्लॉक में लिखा है। मैंने :verify_peer के साथ चलने की कोशिश की है जो सत्य और गलत दोनों पर सेट है और यह मुझे एक ही त्रुटि देता है। विकल्प के बिना EventMachine::HttpRequest#get चला रहा है।

मैंने :ssl विकल्प (यानी प्रमाण के बिना सादा HTTPS) के बिना जीमेल (https://mail.google.com) के अनुरोध को भेजने का भी प्रयास किया है और यह काम करता है, स्टेटस कोड 200, हेडर और बॉडी आउटपुट करता है।

मैं कर्ल के साथ वेब सेवा से एक ही अनुरोध कर रही है की कोशिश की है और कहा कि काम करता है:

curl --silent --cert /tmp/private.key --cacert /tmp/ca.pem https://foobar.com/ 

मैं या है कि मैं या तो उन्हें-http अनुरोध मणि या EventMachine उपयोग कर रहा हूँ सोच रहा हूँ गलत तरीके से एसएसएल कि फाइलें एक प्रारूप में हैं जो कर्ल के साथ काम करती हैं लेकिन EventMachine नहीं।

मैं जानता हूं कि ऊपर दिए गए उदाहरण को कैसे हल किया जाए या EventMachine का उपयोग करके एक समान उदाहरण प्रदान करें, तो इसकी बहुत सराहना की जाएगी!

उत्तर

2

कर्ल के --cert में पास की गई फ़ाइल में प्रमाणपत्र और कुंजी दोनों शामिल हैं (जब तक आप --key अलग से पास नहीं करते)। बस दोनों :private_key_file और :cert_chain_file

मुद्दा और एक पैच कि अंतर्निहित त्रुटि (के बजाय सिर्फ SSL_incomp प्रिंट) को उजागर करता है के बारे में अधिक जानकारी के लिए http://github.com/eventmachine/eventmachine/issues/#issue/115 देखने के लिए तर्क के रूप में /tmp/private.key का उपयोग करें।

संबंधित मुद्दे

 संबंधित मुद्दे