2009-03-31 11 views
6

こんにちは、これを読んでいただきありがとうございます。OpenSSLは自分のCAからの証明書を確認します

私は 証明書を持っている私自身のCAが発行した証明書を確認する必要があります。どのように私は、OpenSSLの

のopensslと同等の操作を行うことができRubyコードに-CAfile

を確認? 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 

私も http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.htmlでのOpenSSL RDOCに "検証" を見つけることができません。

何か助けていただければ幸いです。再度、感謝します!

答えて

8

あなたは

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

で証明書発行者を確認することができる前に、あなたは、私が利用可能なメソッドのリストを取得するには1 Japanese help pageを使用:)

2

加えて

lic.verify(ca.public_key) 

で検証する必要がありますlic.verify()は、署名された証明書のキーのみを確認します。 CcommercialルートCAはエンドユーザー証明書に直接署名しません。通常、1つまたは2つの中間署名証明書が含まれています。

のでCA -> signer -> user certその後、

lic.verify(signer.public_key)signer.verify(CA.public_key)場合はtrueを返しますが、lic.verify(CA.public_key)はfalseを返します。

関連する問題