मैं इस प्रमाणपत्र श्रृंखला को सत्यापित क्यों नहीं कर सकता?


16

मेरे पास एक श्रृंखला में तीन प्रमाण पत्र हैं:

  • root.pem
  • intermediate.pem
  • john.pem

जब मैं उनकी जांच करता हूं तो openssl x509 -in [filename] -text -nooutवे ठीक दिखते हैं, root.pem ऐसा लगता है कि यह स्व-हस्ताक्षरित है (जारीकर्ता == विषय), और प्रत्येक प्रमाण पत्र का विषय अगले के जारीकर्ता है, जैसा कि अपेक्षित था।

और वास्तव में मैं मध्यवर्ती प्रमाणपत्र तक श्रृंखला को सत्यापित कर सकता हूं:

$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK

हालाँकि, john.pem विफल:

$ openssl verify -CAfile root.pem -CAfile intermediate.pem john.pem
john.pem: C = CL, [...redacted data...]
error 2 at 1 depth lookup:unable to get issuer certificate

मेरे ज्ञान का सबसे अच्छा करने के लिए, इसका मतलब है कि Opensl मध्यवर्ती के लिए जारीकर्ता खोजने में असमर्थ है। जिसका अर्थ यह नहीं है कि root.pem वास्तव में मध्यवर्ती के लिए जारीकर्ता है। pem।

मैं क्या खो रहा हूँ?


संपादित करें: मैंने मूल रूप से एक जवाब पोस्ट किया था जिसमें कहा गया था कि root.pem और इंटरमीडिएट। Pem को एक फ़ाइल में सम्‍मिलित किया जाना चाहिए, और फिर किसी को इस फ़ाइल को पैरामीटर के रूप में उपयोग करना चाहिए -CAfile। यह गलत है, क्योंकि यह स्पष्ट रूप से मध्यवर्ती.पीएम पर भरोसा करता है, जैसा कि जोहान्स पिल बताते हैं। मेरे द्वारा हटाए गए उत्तर में वह लिंक पढ़ें: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html


कृपया अपना उत्तर हटा दें, यह खतरनाक गलत सूचना है!
जोहान्स पिल

1
@ जोहान्सपिल डोन, जानकारी के लिए धन्यवाद
जोंग बोर

वास्तव में यह करने के लिए यश और त्वरित प्रतिक्रिया।
जोहान्स पिल

जवाबों:


14

उन्हें सत्यापित करने के लिए आपको दो प्रमाणपत्रों को एक साथ रखने की जरूरत नहीं है।

यदि आपके पास निम्नलिखित तीन प्रमाणपत्र हैं:

  • root.pem - एक स्व-हस्ताक्षरित प्रमाणपत्र संग्रहीत करता है।
  • interate.pem - root.pem द्वारा हस्ताक्षरित एक प्रमाणपत्र संग्रहीत करता है
  • john.pem - मध्यवर्ती द्वारा हस्ताक्षरित एक प्रमाणपत्र संग्रहीत करता है

और आप केवल root.pem पर भरोसा करते हैं, तो आप john.pemनिम्न कमांड से सत्यापित करेंगे :

openssl verify -CAfile root.pem -untrusted intermediate.pem john.pem

आपके पास कई मध्यवर्ती थे, आप सिर्फ चेन कर सकते थे -untrusted intermediate2.pem -untrusted intermediate3.pem ...


इस। एकमात्र सही उत्तर है।
जोहान्स पिल

मैंने सोचा कि अगर मेरे पास बंडल में इंटरमीडिएट और रूट सीए प्रमाण पत्र दोनों हैं, तो opensslवे उन प्रमाण पत्रों को उठा लेंगे और उन्हें सत्यापित करेंगे। क्या ऐसा होने का कोई कारण है? जैसे, यूजर सर्टिफिकेट पर हस्ताक्षर करने वाले व्यक्ति ने इसे इंटरमीडिएट के साथ साइन नहीं किया, लेकिन रूट, या कुछ और?
FilBot3

इस उत्तर का अंतिम वाक्य गलत है। यदि आपके पास कई इंटरमीडिएट हैं, तो आपको उन्हें एक इंटरमीडिएट फाइल में बदलना होगा, फिर untrustedएक बार ध्वज का उपयोग करना होगा । कई बार अविश्वसनीय ध्वज का उपयोग करने से काम नहीं चलता है।
AjaxLeung

1
@AjaxLeung - दोनों बहु -untrustedविकल्प (किसी भी क्रम में) या एक एकल -untrustedविकल्प जो मध्यवर्ती (किसी भी क्रम में संक्षिप्त ) के बंडल को इंगित करता है। यह Ubuntu पर OpenSSL संस्करण 1.1.1c के साथ है।
garethTheRed

हाँ, मुझसे गलती हुई थी। मुझे लगता है कि जिस समय मैंने टिप्पणी लिखी थी उस समय मैं सिर्फ सही फाइलों का उपयोग नहीं कर रहा था।
AjaxLeung

3

क्या कहा @antiduh केवल मेरे लिए एकल मध्यवर्ती प्रमाणपत्र मामले के लिए काम करता है। -untrusted intermediate.pemकमांड में एक से अधिक जोड़ने से काम नहीं लगता है। निश्चित नहीं है कि यह विशिष्ट ओपस्नल संस्करण से संबंधित है।

खुलने वाले दस्तावेज़ के अनुसार: [ https://linux.die.net/man/1/verify]

-अनुकूलित फ़ाइल

अविश्वसनीय प्रमाणपत्रों की एक फ़ाइल। फ़ाइल में कई प्रमाणपत्र होने चाहिए

मेरे मामले में मेरे पास एक श्रृंखला है जैसे: root.pem -> intermediate1.pem -> intermediate2.pem -> john.pem

द्वारा catateate1.pem और मध्यवर्ती 2.pem को एक एकल मध्यवर्ती-चेन.पेम फ़ाइल में डालें और फिर openssl verify -CAfile root.pem -untrusted intermediate-chain.pem john.pemमेरे लिए काम करें।

यह भी लगता है कि सीए एक्सटेंशन में आपको सेट करने की आवश्यकता है basicConstraints = CA:trueअन्यथा मुझे अभी भी ओपनएसएल सत्यापित रिपोर्ट त्रुटि का सामना करना पड़ता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.