OpenSSL проверяет сертификат от собственного CA - PullRequest
6 голосов
/ 31 марта 2009

Привет всем и спасибо за ваше время, прочитав это.

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

openssl verify -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

Я даже не могу найти «проверить» в OpenSSL Rdoc на http://www.ruby -doc.org / STDLIB / libdoc / OpenSSL / RDoc / index.html .

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

Ответы [ 2 ]

8 голосов
/ 01 апреля 2009

Вам нужно подтвердить с

lic.verify(ca.public_key)

Кроме того, перед этим вы можете проверить выдавшего сертификат с помощью

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

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

2 голосов
/ 10 мая 2010

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

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

lic.verify( signer.public_key) и signer.verify( CA.public_key) вернут true, но lic.verify( CA.public_key ) вернет false.

...