2009-03-31 11 views
6

Bonjour à tous et merci pour votre temps à lire ceci.OpenSSL vérifier certificat de propre CA

Je dois vérifier les certificats émis par mon propre CA, pour lequel j'ai un certificat . Comment puis-je faire l'équivalent de OpenSSL

de OpenSSL vérifier -CAfile

dans le code Ruby? Le RDoc pour OpenSSL n'est pas très utile à cet égard. J'ai essayé:

 
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) 

mais je reçois:

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

Je ne trouve même pas "vérifier" dans le rdoc OpenSSL à http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html.

Toute aide est appréciée. Merci encore!

Répondre

8

Vous devez valider avec

lic.verify(ca.public_key) 

en plus avant que vous pouvez vérifier l'émetteur du certificat avec

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

je un Japanese help page pour obtenir la liste des méthodes disponibles :)

2

lic.verify() seulement vérifier la clé du certificat que lic signé. Les autorités de certification racine commerciales ne signent pas directement les certificats d'utilisateur final. Habituellement, il y a un ou deux certificats de signature intermédiaires impliqués.

Donc, si CA -> signer -> user cert puis

lic.verify(signer.public_key) et signer.verify(CA.public_key) retournera vrai, mais lic.verify(CA.public_key) retournera false.

Questions connexes