2009-03-31 4 views
6

안녕하십니까. 시간을내어 읽어 주셔서 감사합니다.OpenSSL이 자신의 CA에서 인증서를 확인하십시오

인증서가있는 본인의 CA에서 발급 한 인증서를 확인해야합니다. 어떻게하려면 openssl의

있는 OpenSSL에 상응하는 루비 코드에서

-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

당신은 내가 가능한 방법 :

2

의 목록을 얻으려면 하나 Japanese help page를 사용하면

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

와 인증서 발급자를 확인할 수 있습니다 전에 추가

lic.verify(ca.public_key) 

으로 검증 할 필요가 lic.verify()은 LIC 서명 된 인증서의 키만 검증합니다. Ccommercial 루트 CA는 최종 사용자 인증서에 직접 서명하지 않습니다. 일반적으로 하나 또는 두 개의 중간 서명 인증서가 관련되어 있습니다.

그래서 CA -> signer -> user cert 다음

lic.verify(signer.public_key)signer.verify(CA.public_key) 경우에 true를 돌려줍니다하지만 lic.verify(CA.public_key)는 false를 돌려줍니다.

관련 문제