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?
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
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}")
Si vous souhaitez toujours envoyer vos certificats, utilisez cet indicateur:
verify_peer: false
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