OpenSSL从自己的CA验证证书

时间:2009-03-31 13:55:08

标签: ruby openssl x509certificate2

大家好,感谢您抽出时间阅读本文。

我需要验证我自己的CA颁发的证书,我有一个 证书。我该怎么做相当于openssl的

openssl verify -CAfile

在Ruby代码中?在这方面,OpenSSL的RDoc不是很有帮助。 我试过了:

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 个答案:

答案 0 :(得分:8)

您需要使用

进行验证
lic.verify(ca.public_key)

此外,您可以使用

验证证书颁发者
lic.issuer.to_s == ca.subject.to_s

我使用一个Japanese help page来获取可用方法列表:)

答案 1 :(得分:2)

lic.verify()仅验证签署lic的证书中的密钥。 Ccommercial root CA不直接签署最终用户证书。通常会涉及一个或两个中间签名证书。

所以,如果CA -> signer -> user cert那么

lic.verify( signer.public_key)signer.verify( CA.public_key)将返回true,但lic.verify( CA.public_key )将返回false。