जेनरेट सॉकेट में pyOpenSSL verify_cb के एसएसएल प्रमाण में सीएन को कैसे जोड़ा जाए

मैं pyOpenSSL के लिए थोड़ा नया हूँ। मैं यह पता लगाने की कोशिश कर रहा हूं कि उत्पन्न सॉकेट को एसएसएल प्रमाण में कैसे जोड़ना है। verify_cb को बुलाया जाता है जो मुझे प्रमाण और एक कॉन तक पहुंच प्रदान करता है लेकिन जब ऐसा होता है तो मैं उन चीज़ों को कैसे जोड़ूं:

क्ली, addr = self.server.accept ()

0
क्या आप जवाब स्वीकार करना चाहते हैं? :)
जोड़ा लेखक Jean-Paul Calderone, स्रोत

1 उत्तर

हैंडशेक पूरा होने के बाद, आप ग्राहक प्रमाण पत्र प्राप्त कर सकते हैं। जबकि क्लाइंट प्रमाणपत्र सत्यापित कॉलबैक (verify_cb) में भी उपलब्ध है, उस कॉलबैक में प्रमाण पत्र सत्यापित करने से कुछ भी करने का प्रयास करने का वास्तव में कोई कारण नहीं है। हैंडशेक पूरी तरह से सफलतापूर्वक पूरा होने के बाद एप्लिकेशन-विशिष्ट मैपिंग सेट करना बेहतर होता है। तो, प्रमाण पत्र (और वहां से, सामान्य नाम) प्राप्त करने के लिए स्वीकृति विधि द्वारा लौटाए गए OpenSSL.SSL.Connection उदाहरण का उपयोग करने पर विचार करें और उस बिंदु पर कनेक्शन ऑब्जेक्ट से संबद्ध करें। उदाहरण के लिए,

client, clientAddress = self.server.accept()
client.do_handshake()
commonNamesToConnections[client.get_peer_certificate().commonName] = client

आप यह सुनिश्चित करने के लिए मैपिंग की जांच कर सकते हैं कि आप किसी भी मौजूदा कनेक्शन को ओवरराइट नहीं कर रहे हैं (शायद प्रत्येक सामान्य नाम को मैप करने के बजाय कनेक्शन की सूची का उपयोग करके)। और निश्चित रूप से कनेक्शन खो जाने पर आपको प्रविष्टियों को हटाने की आवश्यकता है।

'Do_handshake' कॉल वास्तव में होने के लिए हैंडशेक को मजबूर करता है। इसके बिना, हैंडशेक तब होगा जब एप्लिकेशन डेटा को पहले कनेक्शन पर स्थानांतरित किया जाता है। यह ठीक है, लेकिन यह इस मैपिंग को थोड़ा और जटिल बना देगा।

0
जोड़ा