web-dev-qa-db-fra.com

Comment puis-je faire HTTParty ignorer SSL?

J'utilise un serveur local pour tester une application et envoyer des demandes à ce serveur depuis ma propre machine.

Le SSL du serveur de test est mauvais et HTTParty génère des erreurs à cause de cela. D'après ce que j'ai lu, HTTParty devrait ignorer SSL par défaut, mais lorsque j'essaie de le faire:

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

Il jette cette erreur:

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

Comment puis-je lui faire ignorer le SSL?

50
Jasper Kennis

Dans la dernière version de HTTParty, vous pouvez utiliser l'option de vérification pour désactiver la vérification SSL;

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

Pour faire HTTParty toujours ignorer la vérification du certificat SSL et ne pas avoir à le spécifier à chaque appel:

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

Vous pouvez également effectuer cette opération dans une classe en incluant HTTParty en tant que module:

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

Ou

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

Si vous souhaitez toujours envoyer vos certificats, utilisez cet indicateur:

verify_peer: false
3
Danielle

Cela peut être totalement hors de la base, car je suis nouveau sur Ruby, mais c'est ce qui a fonctionné pour moi lorsque d'autres solutions ne

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