2011-02-19 4 views
11

मैं सर्वर के प्रमाणपत्र को सत्यापित करने के लिए OpenSSL का उपयोग कर रहा हूं। चूंकि ओपनएसएसएल को किसी भी अंतर्निहित रूट सीए के बिना भेज दिया जाता है, इसलिए हमें रूट सॉफ़्ट प्रमाणपत्र को अपने सॉफ़्टवेयर (हम स्थिर रूप से लिंक ओपनएसएसएल) के साथ वितरित करना होगा। आमतौर पर, ऐसा करने का तरीका पीईएम प्रारूप में प्रमाणपत्र फ़ाइल वितरित करना और SSL_CTX_load_verify_locations को कॉल करना है।सी ++/ओपनएसएसएल: फ़ाइल के बजाय बफर से रूट सीए का उपयोग करें (SSL_CTX_load_verify_locations)

हालांकि, यह फ़ंक्शन फ़ाइल/निर्देशिका पथ लेता है और सीधे फाइल सिस्टम से मूल प्रमाणपत्र फ़ाइल को पढ़ता है। हम वास्तव में फाइल सिस्टम में सहेजने के बजाय सर्टिफिकेट को हमारे द्विआधारी में हार्ड-कोड करने में सक्षम होना चाहते हैं।

दूसरे शब्दों में, हम वास्तव में SSL_CTX_load_verify_locations जैसे फ़ंक्शन को पसंद करेंगे जो फ़ाइल-पथ के बजाय X509 * लेता है।

क्या ऐसा कुछ मौजूद है? या क्या यह खुद को एक साथ हैक करने का एक आसान तरीका है? हमें इसके बारे में ज्यादा जानकारी नहीं मिल रही है।

किसी भी सुझाव के लिए आपको बहुत बहुत धन्यवाद!

+0

SSL_CTX_load_verify_locations को कॉल करने से पहले डिस्क पर हार्डकोडेड रूट प्रमाणपत्र सहेजने से आपको क्या रोकता है? –

+0

कुछ भी इसे रोकता नहीं है: हालांकि, हम एक सुरक्षा अनुप्रयोग हैं और दुर्भावनापूर्ण हस्तक्षेप के बारे में चिंतित हैं। विशेष रूप से, यदि हमारी रूट प्रमाणपत्र फ़ाइल को ढूंढना और ओवरराइट करना आसान है तो आप हमारे किसी भी एसएसएल लेनदेन को बाधित कर सकते हैं। यदि आवश्यकता हो तो हम इस मार्ग पर जाएंगे, लेकिन यह रूट प्रमाणपत्र को बाइनरी में संकलित करने में सक्षम होना बहुत अच्छा होगा। – DSII

+0

यह आपकी रूट सीए को फ़ाइल में रखने से हार्डकोड करने के लिए और अधिक सुरक्षित नहीं है। –

उत्तर

18

समारोह SSL_CTX_get_cert_store() सत्यापन (X509_STORE *) के लिए इस्तेमाल किया प्रमाणपत्र संग्रह करने के लिए एक संभाल पाने के लिए इस्तेमाल किया जा सकता है, और X509_STORE_add_cert() समारोह (openssl/x509_vfy.h में) तो है कि प्रमाणपत्र संग्रह करने के लिए सीधे एक प्रमाण पत्र को जोड़ने के लिए इस्तेमाल किया जा सकता।

+0

बिल्कुल सही! आपका बहुत बहुत धन्यवाद; यह अद्भुत काम करता है। ठीक वही जो मेरे द्वारा खोजा जा रहा था। धन्यवाद! – DSII

संबंधित मुद्दे