2014-01-06 17 views
44

Ich verwende einen lokalen Server, um eine Anwendung zu testen und Anforderungen an diesen Server von meinem eigenen Computer aus zu stellen.Wie kann ich HTTParty SSL ignorieren lassen?

Das SSL des Testservers ist schlecht und HTTParty gibt Fehler aus. Von dem, was ich lese, HTTParty sollte SSL standardmäßig ignorieren, aber wenn ich versuche, dies zu tun:

HTTParty.get("#{ @settings.api_server }#{ url }").parsed_response 

Es wirft dieser Fehler:

OpenSSL::SSL::SSLError at/
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 

Wie kann ich es die SSL ignorieren machen?

+2

den api-URI zu 'http' anstelle von' https' ändern oder Port 443 entfernen, wenn dieser angegeben ist? –

+0

Siehe hier - https://github.com/jnunemaker/httparty/issues/93 – maerics

+0

Duh, mit http statt war in Ordnung, tnx Mike! Ich hatte das Problem gesehen, auf das du dich beziehst, Maerics, wenn ich dieses kleine Gespräch richtig verstehe, hätte ich diese Fehler nicht erst bekommen sollen, deshalb habe ich diese Frage tatsächlich gepostet, ich war ahnungslos. –

Antwort

51

In der neuesten HTTParty können Sie die Verify-Option verwenden, um die SSL-Verifizierung zu deaktivieren.

HTTParty.get("#{ @settings.api_server }#{ url }", :verify => false).parsed_response 
+0

httparty-0.13.7 - kein Glück – okliv

+0

Ich versuchte mit 0.13. 7 und Ihr Vorschlag hat gut funktioniert. Mein Anruf war ein wenig einfacher: HTTParty.get (url,: verify => false) – guero64

22

Damit HTTParty immer SSL-Zertifikat Überprüfung überspringen, und das nicht in jedem Aufruf angeben:

require 'httparty' 
HTTParty::Basement.default_options.update(verify: false) 

HTTParty.get("#{@settings.api_ssl_server}#{url1}") 
HTTParty.get("#{@settings.api_ssl_server}#{url2}") 
HTTParty.get("#{@settings.api_ssl_server}#{url3}") 
# ... 

Sie können auch tun dies zu einer Klasse scoped wenn einschließlich HTTParty als ein Modul:

require 'httparty' 

class Client 
    include HTTParty 

    default_options.update(verify: false) 
end 

Client.get("#{@settings.api_ssl_server}#{url1}") 
Client.get("#{@settings.api_ssl_server}#{url2}") 
Client.get("#{@settings.api_ssl_server}#{url3}") 
+0

arbeitete für mich mit der neuesten Version von httparty 0.13.7. Danke (Y) –

1

Wenn Sie weiterhin Ihre Zertifikate senden möchten, verwenden Sie dieses Flag:

verify_peer: false 
+0

Dies ist die beste Antwort IMO. Ich verstehe nicht, warum jemand SSL komplett deaktivieren möchte, besonders in einer Produktionsumgebung. –

Verwandte Themen