2009-03-31 19 views
6

से प्रमाण पत्र सत्यापित करें सभी को नमस्कार और इसे पढ़ने के लिए धन्यवाद।ओपनएसएसएल अपने सीए

मुझे अपने स्वयं के सीए द्वारा जारी प्रमाणपत्रों को सत्यापित करने की आवश्यकता है, जिसके लिए मेरे पास प्रमाण पत्र है। मैं openssl के

openssl के बराबर रूबी कोड में की पुष्टि -CAfile

कैसे कर सकता है? ओपनएसएसएल के लिए आरडीओसी इस संबंध में बहुत उपयोगी नहीं है। मैं कोशिश की है:

 
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 

साथ प्रमाण पत्र जारीकर्ता पुष्टि कर सकते हैं कि इससे पहले कि

lic.verify(ca.public_key) 

अलावा के साथ मान्य करने के लिए की जरूरत है मैं एक Japanese help page इस्तेमाल किया उपलब्ध तरीकों :)

2

की सूची प्राप्त करने lic.verify() केवल प्रमाणित लाइसेंस से प्रमाणित की गई कुंजी से सत्यापित करें। कॉमर्सियल रूट सीएएस सीधे उपयोगकर्ता प्रमाण पत्र पर हस्ताक्षर नहीं करते हैं। आम तौर पर एक या 2 इंटरमीडिएट हस्ताक्षर प्रमाणपत्र शामिल होते हैं।

तो अगर CA -> signer -> user cert तो

lic.verify(signer.public_key) और signer.verify(CA.public_key) सच वापस आ जाएगी लेकिन lic.verify(CA.public_key) अवास्तविक लौटाते हैं।

संबंधित मुद्दे