2009-03-31 2 views
6

Привет всем и спасибо за ваше время, читая это.Сертификат проверки OpenSSL от собственного CA

Мне нужно проверить сертификаты, выданные моим собственным CA, для которого у меня есть сертификат . Как я могу сделать эквивалент OpenSSL,

OpenSSL проверить -CAfile

в Ruby, код? RDoc для OpenSSL не очень помогает в этом отношении. Я пробовал:

 
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) 

, но я получаю:

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

Я даже не могу найти "проверить" в RDoc OpenSSL на http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html.

Любая помощь приветствуется. Еще раз спасибо!

ответ

8

Вы должны проверить с

lic.verify(ca.public_key) 

в дополнение до того, что вы можете проверить сертификат эмитента с

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

Я использовал один Japanese help page, чтобы получить список доступных методов :)

2

lic.verify() проверить только ключ из сертификата, который подписал лицензию. Корпоративные корневые ЦС не подписывают сертификаты конечных пользователей напрямую. Обычно имеется один или два промежуточных сертификата подписи.

Так что если CA -> signer -> user cert затем

lic.verify(signer.public_key) и signer.verify(CA.public_key) возвращает истину, но lic.verify(CA.public_key) вернет ложь.

Смежные вопросы