2009-03-31 14 views
6

Hola a todos y gracias por su tiempo de leer esto.OpenSSL verificar certificado de CA

Necesito verificar certificados emitidos por mi propia CA, para la cual tengo un certificado . ¿Cómo puedo hacer el equivalente a

OpenSSL openssl de verificar -CAfile

de código Ruby? El RDoc para OpenSSL no es muy útil en este sentido. que he probado:

 
require 'openssl' 

ca = OpenSSL::X509::Certificate.new(File.read('ca-cert.pem')) 

lic = OpenSSL::X509::Certificate.new(File.read('cert.pem')) 

puts lic.verify(ca) 

pero me sale:

 
test.rb:7:in `verify': wrong argument (OpenSSL::X509::Certificate)! 
(Expected kind of OpenSSL::PKey::PKey) (TypeError) 
    from test.rb:7 

ni siquiera puedo encontrar "verificar" en el rdoc OpenSSL en http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html.

Cualquier ayuda es apreciada. ¡Gracias de nuevo!

Respuesta

8

Usted necesidad de validar con

lic.verify(ca.public_key) 

además antes de que pueda verificar emisor del certificado con

lic.issuer.to_s == ca.subject.to_s 

utilicé uno Japanese help page para obtener la lista de métodos disponibles :)

2

lic.verify() solo verifique la clave del certificado que firmó lic. Las CA raíz comerciales no firman certificados de usuario final directamente. Por lo general, hay uno o dos certificados de firma intermedios involucrados.

Así que si CA -> signer -> user cert continuación

lic.verify(signer.public_key) y signer.verify(CA.public_key) devolverá cierto, pero lic.verify(CA.public_key) volverá falsa.

Cuestiones relacionadas