2011-09-16 12 views
8

मेरा कोड एक HTTPS सर्वर तक पहुंचने का प्रयास कर रहा है और इसका अपना प्रमाणपत्र है। उदाहरण, आईपी "10.0.1.101" है।प्रमाण पत्र के लिए मैक कीचेन में libcurl देखने के लिए कैसे करें

अगर मैं सफारी से गुजरता हूं और "http://10.0.1.101" तक पहुंचता हूं, तो सबकुछ ठीक है। मैं इस यूआरएल के लिए एक सरल curl_easy_perform() करता हूं और डेटा को HTTP यूआरएल से खींचा जा सकता है। ठंडा।

मैं फिर "https://10.0.1.101" (हाँ, HTTPS) और सफारी से पहुंचने का प्रयास करता हूं, मैं प्रमाण पत्र स्वीकार करता हूं और इसे "ट्रस्ट" विकल्प देता हूं और उसके बाद, सफारी HTTPS URL तक पहुंच ठीक।

तो प्रमाण पत्र मैक कीचेन में जोड़ा गया है लेकिन जब मैं HTTPS URL पर curl_easy_perform() का प्रयास करता हूं, तो यह अभी भी CURLE_SSL_CACERT के साथ आता है। libcurl ज्ञात सीए प्रमाण पत्र के साथ HTTPS प्रमाण पत्र प्रमाणीकृत नहीं कर सका।

libcurl की प्रमाणपत्र जांच और मैक कीचेन के बीच लापता लिंक क्या है? क्या कोई लिंक भी है? प्रमाण पत्र के लिए मैक कीचेन में libcurl देखने के लिए संभव है? यदि हां, तो कैसे?

+0

क्या हम एक कीचेन फ़ाइल को इंगित करने के लिए CURLOPT_CAINFO विकल्प का उपयोग कर सकते हैं? – radj

+1

टर्मिनल में 'सुरक्षा' कमांड है, मुझे लगता है कि आप ट्रस्ट चेन प्राप्त करने के लिए उस कमांड के आउटपुट का उपयोग कर सकते हैं। (मैं प्रमाण पत्र या टर्मिनल विशेषज्ञ नहीं हूं, एक स्क्रिप्ट में कोशिश की है और यह कर्ल के साथ काम करता है) –

+0

@ मार्सेलो अल्व्स, धन्यवाद। यह एक अच्छा प्रारंभिक बिंदु जैसा दिखता है लेकिन यदि आप कर सकते हैं, तो क्या आप चरणों को साझा करेंगे कि आपने यह कैसे किया? – radj

उत्तर

2

नहीं। ओपनएसएसएल का उपयोग करने के लिए बनाया गया libcurl केवल एक पीईएम फ़ाइल से सीए कर्ट पढ़ेगा या सीए सीर्ट की निर्देशिका से ओपनएसएसएल-स्टाइल तैयार किया जाएगा।

मैक कीचेन लागू करने के लिए कोई विशेष जादू नहीं है।

+2

वास्तव में? खैर, यह * अजीब * है। मेरी मशीन माउंटेन शेर चल रही है "बस काम करती है" और प्रमाण जुर्माना पहचानती है, लेकिन मेरी मशीन जोसेमेट चल रही है * नहीं जाना * है। – Michael

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