大家好,感谢您抽出时间阅读本文。
我需要验证我自己的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
感谢任何帮助。再次感谢!
答案 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。