2014-01-06 23 views
44

私はローカルサーバーを使ってアプリケーションをテストし、自分のマシンからそのサーバーに要求を出しています。HTTPartyがSSLを無視するようにするにはどうすればよいですか?

テストサーバーのSSLが不良です。そのため、HTTPartyがエラーをスローします。私が読んだものから、HTTPartyは、デフォルトでSSLを無視する必要がありますが、私はこれを行うにしようとすると:

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

それは、このエラーがスローされます。

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

は、どのように私はそれがSSLを無視するのですか?

+2

api URIを 'https'ではなく' http'に変更するか、指定されている場合はポート443を削除しますか? –

+0

ここをクリックしてください - https://github.com/jnunemaker/httparty/issues/93 – maerics

+0

代わりにhttpを使用してDuhは、tnx Mike!私はその問題をあなたの言及を参照してください、maerics、私はちょっと話を正しく理解していれば、私は最初にこれらのエラーを得てはならないはずだ、私は実際にこの質問を投稿した、私は無知だった。 –

答えて

51

最新のHTTPartyでは、verifyオプションを使用してSSL検証を無効にすることができます。

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}") 
# ... 

あなたはまた、行うことができますを含むとき、これはクラスのスコープHTTPartyとして:

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

httparty-0.13.7 - 運なし – okliv

+0

私は0.13で試しました。 7あなたの提案はうまくいきました。 HTTParty.get(url、:verify => false) – guero64

22

HTTPartyは、常にすべての呼び出しでこれを指定する必要がSSLの証明書の検証をスキップし、そしてないようにするにはモジュール:

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

は、httpaty 0.13.7の最新バージョンで私のために働いていました。ありがとう(Y) –

1

証明書を送信する場合は、次のフラグを使用します。

verify_peer: false 
+0

これは最高の答えIMOです。私は誰も、特にプロダクション環境でSSLを完全に無効にしたい理由を理解していません。 –

関連する問題