2009-03-31 19 views
6

Witam wszystkich i dziękuję za poświęcony czas przeczytaniu tego.OpenSSL zweryfikuj certyfikat z własnego CA

Potrzebuję zweryfikować certyfikaty wydane przez mój własny urząd certyfikacji, dla których mam certyfikat . Jak mogę zrobić odpowiednik OpenSSL

OpenSSL zweryfikować -CAfile

w kodzie Ruby? RDoc dla OpenSSL nie jest bardzo pomocny w tym zakresie. Próbowałem:

 
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) 

ale otrzymuję:

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

Nie mogę nawet znaleźć "zweryfikować" w rdoc OpenSSL w http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html.

Każda pomoc jest doceniana. Dzięki jeszcze raz!

Odpowiedz

8

Trzeba zatwierdź

lic.verify(ca.public_key) 

oprócz wcześniej, że można zweryfikować certyfikat wystawcy z

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

użyłem jednego Japanese help page aby otrzymać listę dostępnych metod :)

2

lic.verify() tylko zweryfikować klucz z certyfikatu, który podpisał lic. Ccommercial główne urzędy certyfikacji nie podpisują bezpośrednio certyfikatów użytkownika. Zazwyczaj dotyczy to jednego lub dwóch certyfikatów pośredniego podpisu. jeśli CA -> signer -> user cert następnie

lic.verify(signer.public_key) i signer.verify(CA.public_key)

Więc powróci prawda, ale lic.verify(CA.public_key) zwróci false.