Sto provando a utilizzare RestClient per recuperare una pagina protetta mediante un certificato client SSL. Il mio codice è il seguente:RestClient che non riesce a OTTENERE risorsa utilizzando il certificato client SSL
require 'restclient'
p12 = OpenSSL::PKCS12.new(File.read('client.p12'), 'password')
client = RestClient::Resource.new('https://example.com/',
:ssl_client_key => p12.key,
:verify_ssl => OpenSSL::SSL::VERIFY_NONE)
client.get
quando l'eseguo, compaiono i seguenti fallimento:
1.9.3-p374 :007 > client.get
RestClient::BadRequest: 400 Bad Request
from /home/duncan/.rvm/gems/ruby-1.9.3-p374/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb:48:in `return!'
from /home/duncan/.rvm/gems/ruby-1.9.3-p374/gems/rest-client-1.6.7/lib/restclient/request.rb:230:in `process_result'
from /home/duncan/.rvm/gems/ruby-1.9.3-p374/gems/rest-client-1.6.7/lib/restclient/request.rb:178:in `block in transmit'
from /home/duncan/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/net/http.rb:745:in `start'
from /home/duncan/.rvm/gems/ruby-1.9.3-p374/gems/rest-client-1.6.7/lib/restclient/request.rb:172:in `transmit'
from /home/duncan/.rvm/gems/ruby-1.9.3-p374/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in `execute'
from /home/duncan/.rvm/gems/ruby-1.9.3-p374/gems/rest-client-1.6.7/lib/restclient/request.rb:33:in `execute'
from /home/duncan/.rvm/gems/ruby-1.9.3-p374/gems/rest-client-1.6.7/lib/restclient/resource.rb:51:in `get'
from (irb):7
from /home/duncan/.rvm/rubies/ruby-1.9.3-p374/bin/irb:13:in `<main>'
Sono abbastanza sicuro che questo è un fallimento per l'autenticazione, come ottengo lo stesso errore nella un browser se non installo il certificato client.
Sto usando OpenSSL::SSL::VERIFY_NONE
perché il server ha un certificato autofirmato, e credo che questo sia il valore corretto da passare per ignorarlo.
Qualsiasi suggerimento su come ottenere questo funzionamento sarebbe molto apprezzato - anche un puntatore a qualche documentazione dettagliata, o un suggerimento di un diverso gioiello potrebbe funzionare. Non ho avuto molta fortuna sia con i documenti gemma o Google :(
Avere una soluzione con 'VERIFY_NONE' è così sbagliato in così tanti livelli ... Qual è il punto di utilizzo di ssl quando non si verifica il certificato? –
@JarmoPertman 'VERIFY_NONE' è utile quando si sviluppa localmente contro un server con un certificato autofirmato. – WildlyInaccurate
Sì, ma quando SO è pieno di risposte accettate con VERIFY_NONE' senza alcuna spiegazione su cosa potrebbe effettivamente fare, è molto probabile che codice come questo finirà ovunque e nessun certificato verrà verificato. –