मैं ओपनएसएसएल विशेषज्ञ नहीं हूं, लेकिन मैं एसएसएल-सुरक्षित सर्वर से कनेक्ट करने वाले क्लाइंट के लिए ओसीएसपी स्टेपलिंग को संभालने के लिए कुछ कोड लिखने की कोशिश कर रहा हूं। ओसीएसपी की मेरी समझ यह है कि यह साबित करने के लिए प्रयोग किया जाता है कि प्रस्तुत किए जाने वाले प्रमाण पत्र को निरस्त नहीं किया गया है, जिसका अर्थ है कि मुझे जारीकर्ता द्वारा प्रकाशित सीआरएल के प्रबंधन से निपटने की आवश्यकता नहीं है।सत्यापन कॉलबैक के बाद ओसीएसपी स्टेपलिंग कॉलबैक क्यों कहा जाता है?
मैं प्रमाणपत्रों के सत्यापन को संभालने के लिए कॉलबैक सेट करने के लिए SSL_CTX_set_verify का उपयोग करता हूं (ठीक है, ओपनएसएसएल की अपनी आंतरिक सत्यापन प्रक्रिया में अपवादों को संभालने के लिए। मुझे लगता है, लेकिन सकारात्मक प्रमाण नहीं मिल रहा है कि यह आंतरिक प्रक्रिया प्रमाणपत्र की निरस्तीकरण स्थिति की जांच नहीं करती है), और वर्तमान में मेरा कोड इस अवसर का उपयोग यह जांचने के लिए करता है कि जारीकर्ता विश्वसनीय है (या यदि नहीं, तो जारीकर्ता का जारीकर्ता भरोसा करता है, और तब तक जब तक श्रृंखला को भरोसा नहीं किया जाता है, या अस्वीकार कर दिया जाता है), साथ ही साथ अन्य चीजें जैसे कि प्रमाण पत्र समाप्त नहीं हुआ है। (यह भी पहले से ही चेक किया जा सकता है, लेकिन यह मेरे प्रश्न के लिए वास्तव में महत्वपूर्ण नहीं है)।
मैं अपने कोड संशोधित किया
SSL_set_tlsext_status_type(<the ssl object>, TLSEXT_STATUSTYPE_ocsp);
SSL_CTX_set_tlsext_status_cb(<the context>, ssl_cb_ocsp_verify);
जोड़ने और फिर मैं प्रतिक्रिया मिल और हैंडलर में यह देख सकते हैं। अब तक सब ठीक है!
लेकिन अजीब बात यह है कि मुझे लगता है मैं SSL_CTX_set_verify हैंडलर प्राप्त के बाद OCSP कॉलबैक मिलता है। मेरे (स्वीकार्य रूप से बेवकूफ) सोचने के लिए, इसका मतलब है कि मेरे पास दो विकल्प हैं:
1) सत्यापन कॉलबैक में निरस्तीकरण स्थिति की जांच करें, या तो सीआरएल का उपयोग करके, या अपना स्वयं का ओसीएसपी अनुरोध कर रहा है। यदि मैं ऐसा करता हूं, तो ओसीएसपी कॉलबैक में कुछ भी करने में कोई बात नहीं है, क्योंकि मैंने प्रमाण पत्र 2 की निरस्तीकरण स्थिति पहले ही निर्धारित कर दी है) सत्यापन कॉलबैक में निरस्तीकरण स्थिति की जांच न करें, और उम्मीद है कि ओसीएसपी हैंडलर कहा जाता है।
मैंने नोटिस किया कि ओसीएसपी हैंडलर से पहले हैडलर से पहले है यदि सर्वर से प्रतिक्रिया में एक स्टेपल ओसीएसपी संदेश शामिल नहीं है। तो एक संभावना यह है कि मैंने कुछ ध्वज को 'no_ocsp' शुरू में 0 पर सेट किया है, और फिर यदि मुझे कोई संदेश संलग्न नहीं होने पर ओसीएसपी कॉलबैक मिलता है, तो इसे 1 पर सेट करें। फिर सत्यापन हैंडलर में मैं इसे जांचने और निर्धारित करने के लिए जांच सकता हूं कि क्या ओसीएसपी हैंडलर को बाद में बुलाया जाएगा। यह एक कार की तरह लगता है जो किसी के रूप में खुद को अनलॉक करता है, और फिर यदि कोई व्यक्ति आने वाली गलत कुंजी डालता है, तो यह खुद को ताला लगा देता है - दूसरे शब्दों में, यह निश्चित रूप से सुरक्षा करने का 'सही' तरीका नहीं हो सकता है ?!
इसलिए, मुझे ओसीएसपी, ओपनएसएसएल, या दोनों का उपयोग करने के बारे में कुछ मौलिक गलतफहमी होनी चाहिए! मैं क्या गलत कर रहा हूं?
(मैं इसी तरह के सवाल जो वर्णन करती हैं कि करने के लिए मिल OCSP-स्टेपल संदेश, लेकिन मेरे सवाल यह है कि आप वास्तव में, एक समझदार तरह से इसका इस्तेमाल कॉलबैक के आदेश दिए गए से संबंधित है देखा है स्पष्ट है।: मैं बिना किसी समस्या के OCSP_RESPONSE प्राप्त कर सकता हूं)
"। ... OpenSSL की अपनी आंतरिक सत्यापन प्रक्रिया के लिए अपवाद हैंडलिंग मुझे लगता है" की जाँच करें। यदि आवश्यक हो तो आपको ऐसा करना होगा। – jww
आह, टिप के लिए धन्यवाद!मुझे एक श्वेतपत्र मिला है "सब कुछ जो आप हमेशा openssl के साथ प्रमाणपत्र सत्यापन के बारे में जानना चाहते थे (लेकिन पूछने से डरते थे)", जो इस पर कुछ अतिरिक्त जानकारी प्रदान करता है, लेकिन दुर्भाग्यवश ओसीएसपी पर नहीं (संक्षिप्त उल्लेख से अलग) – trime
इससे पहले कि आप भरोसा करते हैं कि सर्वर आपको क्या कह रहा है (_e.g._ ओसीएसपी स्टेपलिंग), आप उस सर्वर पर पहली बार भरोसा करना चाहते हैं, इसलिए ओपनएसएसएल सर्वर के प्रमाण _first_ को सत्यापित क्यों कर रहा है, यह सुनिश्चित कर लें कि यह एक वैध और भरोसेमंद प्रमाणपत्र है _at सब_। फिर, मान लें कि प्रमाणपत्र वैध दिखता है, आप देखना चाहते हैं कि इसे निरस्त कर दिया गया है - और वह तब होता है जब आप स्टेपल ओसीएसपी प्रतिक्रिया को संभाल/संसाधित करेंगे। – Castaglia