6

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

我需要验证我自己的 CA 颁发的证书,我有证书。我怎样才能做相当于openssl的

openssl 验证 -CAfile

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

需要'openssl'

ca = OpenSSL::X509::Certificate.new(File.read('ca-cert.pem'))

lic = OpenSSL::X509::Certificate.new(File.read('cert.pem'))

把 lic.verify( ca )

但我得到:

test.rb:7:in `verify': 错误的参数(OpenSSL::X509::Certificate)!
(预期的 OpenSSL::PKey::PKey 类型)(TypeError)
  来自 test.rb:7

我什至无法在 http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html的 OpenSSL Rdoc 中找到“验证” 。

任何帮助表示赞赏。再次感谢!

4

2 回答 2

8

您需要验证

lic.verify(ca.public_key)

此外,在此之前,您可以验证证书颁发者

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

我使用了一个日语帮助页面来获取可用方法的列表 :)

于 2009-03-31T21:11:02.140 回答
2

lic.verify()仅从签署 lic 的证书中验证密钥。商业根 CA 不直接签署最终用户证书。通常涉及一到两个中间签名证书。

所以如果CA -> signer -> user cert那时

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

于 2010-05-10T13:40:04.107 回答