بينسل التحقق من شهادة من CA الخاصة
-
22-08-2019 - |
سؤال
ومرحبا بكم جميعا وشكرا على وقتك قراءة هذا.
ولست بحاجة للتحقق من الشهادات التي تصدرها بلدي CA الخاصة، ولدي شهادة. كيف يمكنني أن أفعل ما يعادل بينسل ل
وبينسل تحقق -CAfile
في التعليمات البرمجية روبي؟ و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
وأنا لا يمكن أن تجد حتى "تحقق" في Rdoc بينسل في http://www.ruby-doc.org/stdlib/libdoc /openssl/rdoc/index.html .
وهو محل تقدير أي مساعدة. شكرا مرة أخرى!
المحلول
وتحتاج إلى التحقق من صحة مع
lic.verify(ca.public_key)
وبالإضافة قبل أن تتمكن من التحقق من مصدر الشهادة مع
lic.issuer.to_s == ca.subject.to_s
صفحة المساعدة اليابانية للحصول على قائمة الأساليب المتاحة:)
نصائح أخرى
وlic.verify()
فقط التحقق من المفتاح من الشهادة التي وقعت يسانس. المصدقة الجذر Ccommercial لا توقع شهادات المستخدم النهائي مباشرة. عادة ما يكون هناك واحد أو 2 الشهادات توقيع المتوسطة المعنية.
وحتى إذا CA -> signer -> user cert
ثم
وlic.verify( signer.public_key)
وsigner.verify( CA.public_key)
سيعود صحيح ولكن سوف lic.verify( CA.public_key )
عودة كاذبة.