2010-03-24 24 views
16

¿Cómo puedo verificar los certificados de un sitio como https://processing.ukash.com/ en rubí con net/http?cómo validar cadena de certificados SSL en rubí con net/http

https = Net::HTTP.new('processing.ukash.com', 443) 
https.use_ssl = true 
https.verify_mode = OpenSSL::SSL::VERIFY_NONE 

funciona tan lejos, pero ¿Cómo se verifica que es el CERT en este momento? Guardé el certificado desde Firefox, pero el archivo .pem resultante tiene muchos certificados y net/http no parece gustarle.

Respuesta

22

De mi colección de fragmentos de código:

#!/usr/bin/env ruby 
# How to: 
# ======= 
# Use Ruby's net/https library, to verify a SSL certificate. 
# ========================================================== 
# - Without verification the following code will lead to: 
# warning: peer certificate won't be verified in this SSL session 
# 
# #------------------begin example----------------------------- 
# require 'net/http' 
# require 'net/https' 
# require 'uri' 
# 
# url = URI.parse 'https://myname:[email protected]/' 
# http = Net::HTTP.new(url.host, url.port) 
# http.use_ssl = (url.scheme == 'https') 
# request = Net::HTTP::Get.new(url.path) 
# request.basic_auth url.user, url.password 
# response = http.request(request) 
# #-------------------end example------------------------------ 
# 
# To verify the ssl cert cosider adapting the following. 
# Status: Untested 
# ======= 
# 
# References: 
# =========== 
# [1] http://mimori.org/%7Eh/tdiary/20080301.html#p03 
# [2] http://redcorundum.blogspot.com/2008/03/ssl-certificates-and-nethttps.html 
# 
require 'net/http' 
require 'net/https' 
require 'uri' 

RootCA = '/etc/ssl/certs' 

url = URI.parse 'https://myname:[email protected]/' 
http = Net::HTTP.new(url.host, url.port) 
http.use_ssl = (url.scheme == 'https') 
if (File.directory?(RootCA) && http.use_ssl?) 
    http.ca_path = RootCA 
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER 
    http.verify_depth = 5 
else 
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
end 
request = Net::HTTP::Get.new(url.path) 
request.basic_auth url.user, url.password 
response = http.request(request) 

Esperanza esto ayuda?

+0

me parecen obtener errores desde el código. tal vez PEBKAC. – Thufir

+1

¿Puedes señalar una esencia con los errores? – Hedgehog

+0

Le pedí a la pasta que se pegue para siempre, pero no sé. de todos modos, enlace: http://pastebin.mozilla.org/1460391 podría ser fácilmente yo. Realmente no lo he investigado todavía. – Thufir

Cuestiones relacionadas