Как заставить 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?


person Jasper Kennis    schedule 06.01.2014    source источник
comment
изменить URI API на http вместо https или удалить порт 443, если он указан?   -  person Mike Campbell    schedule 06.01.2014
comment
См. Здесь - https://github.com/jnunemaker/httparty/issues/93   -  person maerics    schedule 06.01.2014
comment
Да, использовать http вместо этого было нормально, спасибо Майк! Я видел эту проблему, о которой вы говорите, maerics, если я правильно понимаю этот небольшой разговор, я не должен был получать эти ошибки в первую очередь, поэтому я на самом деле разместил этот вопрос, я был невежественен.   -  person Jasper Kennis    schedule 08.01.2014
comment
Если вы установили Ruby с RVM в качестве двоичного файла и OpenSSL с Homebrew, то между этими двумя версиями есть несоответствие. См. Эту проблему: stackoverflow.com/questions/30901864/   -  person Petrus Repo    schedule 09.10.2015


Ответы (4)


В последней версии HTTParty вы можете использовать опцию проверки, чтобы отключить проверку SSL;

HTTParty.get( "#{ @settings.api_server }#{ url }", :verify => false ).parsed_response
person sixones    schedule 27.03.2014
comment
httparty-0.13.7 - не повезло - person okliv; 04.11.2015
comment
Я пробовал с 0.13.7, и ваше предложение сработало. Мой звонок был немного проще: HTTParty.get (url,: verify = ›false) - person guero64; 03.11.2016
comment
спасибо за такой ответ! Мне любопытно, что заставляет это работать? - person James N; 23.02.2019

Чтобы 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}")

Or

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}")
person renier    schedule 17.09.2014
comment
у меня работал с последней версией httparty 0.13.7. спасибо (Y) - person Mostafa Hussein; 10.01.2016

Если вы хотите по-прежнему отправлять свои сертификаты, используйте этот флаг:

verify_peer: false
person Danielle    schedule 31.10.2016
comment
Это лучший ответ ИМО. Я не понимаю, зачем кому-то полностью отключать SSL, особенно в производственной среде. - person Michael Gabay; 21.11.2017

Это может быть совершенно неуместно, поскольку я новичок в Ruby, но именно это сработало для меня, когда другие решения не помогли

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

Дополнительные способы сделать это, если вы получили «динамическое назначение констант» (вытащили отсюда)

OpenSSL::SSL.const_set(:VERIFY_PEER, OpenSSL::SSL::VERIFY_NONE) 
person Brad Parks    schedule 29.04.2019
comment
Это приводит к синтаксической ошибке: dynamic constant assignment - person Farley Knight; 12.09.2019
comment
Подробнее об этом здесь - это следует использовать только для разработки или тестирования, НИКОГДА в производстве: stackoverflow.com/a/1113614/26510 < / а> - person Brad Parks; 13.09.2019
comment
Добавил этот код в env.rb и отлично поработал! - person CarolCiola; 05.01.2021