Provo a creare una richiesta POST con SSL ma senza OpenSSL :: SSL :: VERIFY_NONE perché è in grado di attaccare gli attacchi di sicurezza e senza certificato PEM. Ma io individuare i problemi, il mio codice Ruby per la richiesta di invio POST:Ruby Sinatra crea richiesta post senza PEM e OpenSSL :: SSL :: VERIFY_NONE
post '/test/test1' do
cross_origin
post_data = request.body.read
res_Data = JSON.parse(post_data)
userName = res_Data['username']
@responseFromServer=''
uri = URI('https://test.com/test1')
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https',
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
request = Net::HTTP::Post.new uri.request_uri
request.basic_auth 'aa', 'bb'
request.body = {'username' =>userName}.to_json
response = http.request request
@responseFromServer = response.body.to_s
end
newJson = JSON.parse(@responseFromServer)
status_msg = newJson['status']['status_msg']
if (status_msg == "Success")
return 'true'
end
return 'false'
end
È metodo ha funzionato ma usare OpenSSL :: SSL :: VERIFY_NONE. Come creare un metodo per inviare la richiesta POST senza OpenSSL :: SSL :: VERIFY_NONE e Sertificate PEM?
EDIT SSL/HTTPS richiesta Update: Ci sono alcune buone ragioni per cui questo esempio di codice è male. Introduce una potenziale vulnerabilità di sicurezza se è essenziale utilizzare il certificato del server per verificare l'identità del server a cui ci si sta connettendo. C'è una soluzione per il problema però!
require "net/https"
require "uri"
uri = URI.parse("https://secure.com/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
response.body
response.status
response["header-here"] # All headers are lowercase
SSL/HTTPS richiesta con certificato PEM
require "net/https"
require "uri"
uri = URI.parse("https://secure.com/")
pem = File.read("/path/to/my.pem")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.cert = OpenSSL::X509::Certificate.new(pem)
http.key = OpenSSL::PKey::RSA.new(pem)
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
request = Net::HTTP::Get.new(uri.request_uri)
La mia domanda: Come creare il metodo POST senza PEM e OpenSSL :: SSL :: VERIFY_NONE?
Questo potrebbe aiutare: http://stackoverflow.com/questions/1113422/how-to-bypass-ssl-certificate-verification-in-open-uri – karlingen
@karlingen Intendi cosa ho bisogno di usare ** OpenSSL: : SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE **? Funziona ma ho bisogno di usare ** POST request senza OpenSSL :: SSL :: VERIFY_NONE ** –
@karlingen O se uso ** OpenSSL :: SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE ** è risolto il problema della sicurezza? –