टिप्पणियों से मेरे पहले जवाब में मैं देखता हूं कि एक सामान्य गलतफहमी है कि 'प्रमाणपत्र प्रमाण सत्यापित करें' क्या होता है। मैं कुछ भ्रम को खत्म करने के लिए यहां एक संक्षिप्त स्पष्टीकरण लिखने की कोशिश करूंगा।
प्रमाणपत्र सत्यापन कुछ क्रिप्टोग्राफिक हस्ताक्षर के खिलाफ प्रमाणपत्र मेटाडेटा (यानी विषय, वैधता अवधि, एक्सटेंशन और ऐसे) पर हस्ताक्षर की जांच करने के बारे में है।
यदि आपके पास सत्यापन के लिए सब कुछ एक स्व-हस्ताक्षरित प्रमाणपत्र है, तो आप इसे एक ही मेटाडेटा के साथ किसी अन्य स्व-हस्ताक्षरित प्रमाणपत्र से अलग नहीं कर सकते हैं, लेकिन अलग-अलग कुंजी, जब तक कि आप पहले से ही महत्वपूर्ण प्रमाणपत्र की कुंजी नहीं जानते। और यह न भूलें कि आप इस पूर्व-साझा ज्ञान के लिए आवश्यकता को दूर करने के लिए इस सत्यापन प्रक्रिया को स्थापित करते हैं। नियमित प्रमाणपत्र सत्यापन के साथ आप कुछ पूर्व-साझा ज्ञान रखने के लिए आवश्यकता को पूरी तरह से हटा नहीं सकते हैं, जो कि तृतीय-पक्ष प्रमाणपत्रों का एक सेट है, जिसे 'सीए प्रमाण पत्र' भी कहा जाता है। चूंकि यह ज्ञान पूर्व-साझा किया गया है, इसलिए वे प्रमाणपत्र स्वयं हस्ताक्षरित हो सकते हैं, लेकिन याद रखें कि आपको सत्यापन प्रक्रिया से नहीं, बल्कि कुछ बाहरी ज्ञान से उन प्रमाणपत्रों की वैधता के बारे में जानकारी प्राप्त हुई है।
आप विश्वसनीय 'CA प्रमाणपत्र' साथियों के बीच वितरित, आप अन्य प्रमाणपत्र पर हस्ताक्षर और विश्वसनीय CA की है कि पहले से शेयर ज्ञान के खिलाफ हस्ताक्षर की जाँच करने के लिए उन का उपयोग कर सकते का एक सेट है जब।
लेकिन यदि आपके पास प्रमाण पत्र को छोड़कर स्वयं हस्ताक्षरित प्रमाण पत्र के बारे में कोई अतिरिक्त जानकारी नहीं है, तो आप इस विशेष प्रमाणपत्र पर विश्वास के बारे में कोई धारणा नहीं कर सकते हैं, क्योंकि इसे कुछ बुरा हैकर और साथ ही विश्वसनीय भरोसेमंद सर्वर द्वारा जारी किया जा सकता है।
कृपया किसी भी प्रकार की प्रमाणपत्र सत्यापन प्रक्रियाओं को लागू करने से पहले Man in the middle attack, Public key infrastructure और Public key cryptography के बारे में कुछ ज्ञान प्राप्त करें।
एक स्व-हस्ताक्षरित प्रमाणपत्र की है कि अंधे सत्यापन समझते हैं कृपया अपना नेटवर्क में एक चालाक हैकर से तुम भी रक्षा नहीं करेंगे, यहां तक कि सामान्य रूप में इंटरनेट सुरक्षा पर विचार नहीं।
संपादित करें: प्रश्न लेखक ने स्पष्ट किया कि वह वास्तव में M2Crypto बाइंडिंग का उपयोग कर प्रमाण पत्र पर एक Verisign (या अन्य CA) हस्ताक्षर को सत्यापित करने के तरीके की तलाश में था। यहां दो उदाहरण हैं:
from M2Crypto import X509, SSL
# manual validation of a signature on a certificate using a given CA cert:
ca = X509.load_cert('/path/to/ca_cert.pem')
cert = X509.load_cert('certificate_to_validate.pem')
print "Verification results:", cert.verify(ca.get_pubkey())
# adding a given CA cert to the SSL Context for verification
ctx = SSL.Context()
# load a certificate from file
ctx.load_verify_locations(cafile='/path/to/ca_cert.pem')
# or use all certificate in a CA directory
ctx.load_verify_locations(capath='/path/to/ca/dir')
# or you can specify both options at the same time.
आप कई CA प्रमाणपत्रों के साथ एक निर्देशिका (जो अक्सर अधिक सुविधाजनक है) आप <hash>.0
करने के लिए प्रत्येक प्रमाण पत्र जहां <hash>
प्रमाणपत्र विषय के हैश है नाम बदलने चाहिए उपयोग करने के लिए जा रहे हैं (के साथ प्राप्त openssl x509 -noout -hash -in cert.pem
)।
क्षमा करें, मेरा प्रश्न गलत था। – Bhargava
मैं वास्तव में M2Crypto का उपयोग कर Verisign- हस्ताक्षरित प्रमाणपत्र सत्यापन की तलाश में था। – Bhargava
मैंने M2Crypto उदाहरणों के साथ उत्तर अद्यतन किया है। – abbot