web-dev-qa-db-ja.com

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を無視させるにはどうすればよいですか?

50
Jasper Kennis

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

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

HTTPartyを行うには、常に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をモジュールとして含めると、クラスをスコープとしてこれを行うこともできます。

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

または

require 'httparty'

module APIHelpers
  class Client
    include HTTParty
    default_options.update(verify: false)
  end
end
World(APIHelpers)

Client.get("#{@settings.api_ssl_server}#{url1}")
Client.get("#{@settings.api_ssl_server}#{url2}")
Client.get("#{@settings.api_ssl_server}#{url3}")
27
renier

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

verify_peer: false
3
Danielle

Rubyを初めて使用するので、これは完全に外れている可能性がありますが、他のソリューションでは解決できない場合にこれがうまくいきました。

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
0
Brad Parks