मैं सर्वर के प्रमाणपत्र को सत्यापित करने के लिए OpenSSL का उपयोग कर रहा हूं। चूंकि ओपनएसएसएल को किसी भी अंतर्निहित रूट सीए के बिना भेज दिया जाता है, इसलिए हमें रूट सॉफ़्ट प्रमाणपत्र को अपने सॉफ़्टवेयर (हम स्थिर रूप से लिंक ओपनएसएसएल) के साथ वितरित करना होगा। आमतौर पर, ऐसा करने का तरीका पीईएम प्रारूप में प्रमाणपत्र फ़ाइल वितरित करना और SSL_CTX_load_verify_locations को कॉल करना है।सी ++/ओपनएसएसएल: फ़ाइल के बजाय बफर से रूट सीए का उपयोग करें (SSL_CTX_load_verify_locations)
हालांकि, यह फ़ंक्शन फ़ाइल/निर्देशिका पथ लेता है और सीधे फाइल सिस्टम से मूल प्रमाणपत्र फ़ाइल को पढ़ता है। हम वास्तव में फाइल सिस्टम में सहेजने के बजाय सर्टिफिकेट को हमारे द्विआधारी में हार्ड-कोड करने में सक्षम होना चाहते हैं।
दूसरे शब्दों में, हम वास्तव में SSL_CTX_load_verify_locations जैसे फ़ंक्शन को पसंद करेंगे जो फ़ाइल-पथ के बजाय X509 * लेता है।
क्या ऐसा कुछ मौजूद है? या क्या यह खुद को एक साथ हैक करने का एक आसान तरीका है? हमें इसके बारे में ज्यादा जानकारी नहीं मिल रही है।
किसी भी सुझाव के लिए आपको बहुत बहुत धन्यवाद!
SSL_CTX_load_verify_locations को कॉल करने से पहले डिस्क पर हार्डकोडेड रूट प्रमाणपत्र सहेजने से आपको क्या रोकता है? –
कुछ भी इसे रोकता नहीं है: हालांकि, हम एक सुरक्षा अनुप्रयोग हैं और दुर्भावनापूर्ण हस्तक्षेप के बारे में चिंतित हैं। विशेष रूप से, यदि हमारी रूट प्रमाणपत्र फ़ाइल को ढूंढना और ओवरराइट करना आसान है तो आप हमारे किसी भी एसएसएल लेनदेन को बाधित कर सकते हैं। यदि आवश्यकता हो तो हम इस मार्ग पर जाएंगे, लेकिन यह रूट प्रमाणपत्र को बाइनरी में संकलित करने में सक्षम होना बहुत अच्छा होगा। – DSII
यह आपकी रूट सीए को फ़ाइल में रखने से हार्डकोड करने के लिए और अधिक सुरक्षित नहीं है। –