2016-10-07 5 views
6

जब मैं कोशिश:HTTPPoison/हैकनी में एक विश्वसनीय प्रमाणपत्र कैसे जोड़ें?

HTTPoison.get! "https://facebook.com" 

मैं:

** (HTTPoison.Error) {:tls_alert, 'unknown ca'} 
[error] SSL: :certify: ssl_handshake.erl:1606:Fatal error: unknown ca 

    (httpoison) lib/httpoison.ex:66: HTTPoison.request!/5 

जो उम्मीद की तरह है के बाद से मेरी कंपनी में मैं बाहर निकलने के लिए फ़ायरवॉल के प्रमाणपत्र पर भरोसा करने की जरूरत है।

मैंने सर्टिफिकेट (.cer फ़ाइल) सिस्टम पर भरोसा किया है, इसलिए wgethttps यूआरएल एक्सेस करते समय मुझे एसएसएल त्रुटियां नहीं देता है। लेकिन ऐसा लगता है कि हैकनी/HTTPoison इस विन्यास को अनदेखा करता है।

मैं HTTPoison/हैकनी को प्रमाण पत्र को विश्वसनीय प्रमाणपत्र के रूप में कैसे पहचानूं?

+1

https: //www.ra bbitmq.com/ssl.html आपको सही रास्ते पर सेट कर सकता है। दिन के अंत में, HTTPoison हैकनी लपेटता है जो टीएलएस के लिए Erlang ': ssl' मॉड्यूल का उपयोग करता है। मैं अनुमान लगाता हूं कि HTTP दस्तावेज़ में सही कॉल के लिए उस दस्तावेज़ में वर्णित विकल्पों को पारित करने से चाल चलती है (मैं इसे स्वयं जांचता हूं लेकिन बाहर निकलने के बारे में, क्षमा चाहता हूं ;-)) – cdegroot

उत्तर

2

मैंने हाल ही में इस मुद्दे में भी भाग लिया।

opts = [{:ssl_options, [{:cacertfile, "/<path to my cert>/MyCertificates.pem"}]}] 
HTTPoison.post(login, headers, hackney: opts) 

वैकल्पिक रूप से आप प्रमाण पत्र (के बारे में अधिक अनुरोध विकल्पों here) की जाँच के बिना SSL कनेक्शन प्रदर्शन कर सकता है: क्या मेरे लिए काम किया this ticket में देव ने सुझाव दिया hackney के लिए सीधे प्रमाणपत्र फ़ाइल का स्थान गुजर था

HTTPoison.post(login, headers, hackney: [:insecure]) 
+0

मुझे यह काम करने के लिए मिला, लेकिन इसमें तृतीय पक्ष निर्भरताओं (ueberauth_facebook) के कोड को बदलने में शामिल था। क्या कोई वैश्विक समाधान नहीं है? – diogovk

1

प्रमाणपत्र फ़ाइल पथ इस तरह toHTTPoison विकल्पों पारित कर दिया जा रहा है:

defp add_certs do 
      [                                   
      hackney: [ # :hackney options                           
      ssl_options: [ # :ssl options                           
       cacertfile: # CA certificate used to validate server cert; path(), "string" is ok     
       certfile: # client certificate, signed by CA; path(), "string" is ok         
       keyfile: # private key for client.crt; path(). "string" is ok           
       password: # password for keyfile; string(), "string" not ok, use 'char list'         
      ]                                  
      ]                          
      ] 
    end 
    HTTPoison.post(url, request_xml, headers, add_certs) 
संबंधित मुद्दे

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