2012-12-06 36 views

उत्तर

24
  • CURLOPT_SSL_VERIFYPEER जांच करता है कि दूरदराज के प्रमाणपत्र मान्य है, यानि कि तुम पर भरोसा है कि है कि यह एक सीए तुम पर भरोसा है और यह वास्तविक है कि जारी किया गया था।

  • CURLOPT_SSL_VERIFYHOST चेक करता है कि उस इकाई को प्रमाण जारी किया गया था जिसे आप बात करना चाहते थे।

यह एक वास्तविक जीवन परिदृश्य के लिए तुलना करने के लिए

, VERIFYPEER जाँच कि आईडी के रूप एक ही है कि आप को पहचान (यानी एक ऐसा देश है तुम पर भरोसा से पासपोर्ट, एक कंपनी है कि आपके परिचित स्टाफ कार्ड, है की तरह है .. ।)। Verifhost आप उन कार्ड मैचों पर वास्तविक नाम की जांच करना चाहते हैं, जिनसे आप बात करना चाहते थे।

यदि आप VERIFYHOST (सही मान 2, 1 नहीं, बीटीडब्लू) का उपयोग नहीं करते हैं, तो आप होस्ट नाम सत्यापन अक्षम करते हैं और एमआईटीएम हमलों के लिए दरवाजा खोलते हैं: आपके द्वारा विश्वास किए गए आईडी के रूप में कोई भी व्यक्ति किसी के प्रति भेदभाव कर सकता है उन आईडी का सेट जिन्हें आप भरोसा करते हैं, उदाहरण के लिए वैध पासपोर्ट वाला कोई भी व्यक्ति नाटक कर सकता है कि वे वैध पासपोर्ट के साथ किसी और के हैं।

+1

विस्तारित उत्तर के लिए धन्यवाद। इससे मुझे एक और त्वरित प्रश्न मिलते हैं: मुझे एक वैध SSL प्रमाणपत्र https: //www.example.com (cn = www.example.com जैसा होना चाहिए) के साथ एक वेबसाइट मिली है। जब मैं अपने आईपी पते के माध्यम से वेबसाइट पर जाता हूं, तो यह मुझे प्रमाण त्रुटियों को दिखाएगा (क्योंकि सीएन मेल नहीं खाता है), SSL_VERIFYHOST को हटाकर इसे हल किया जाएगा, लेकिन इसे एमआईटीएम हमलों तक खुल जाएगा। इसे संभालने का सही समाधान क्या है? (त्रुटियों को दिखाए बिना आईपी पते के माध्यम से कनेक्ट करने की अनुमति दें)। CURLOPT_SSL_CTX_FUNCTION का उपयोग करके संपूर्ण सत्यापन विधि को केवल यह सत्यापित करने के लिए कि एक विशिष्ट आईपी पता सीएन से मेल खाता है? – user1782427

+0

आप आईपी पते से क्यों जुड़ना चाहते हैं? यह आपके अपने सीए (या स्वयं हस्ताक्षरित) से प्रमाण पत्र है? – Bruno

+0

मेरे पास 2 सर्वर (1.1.1.1 और 2.2.2.2) हैं, example.com के लिए DNS में 2 ए रिकॉर्ड हैं (उन आईपी पते में से)। ग्राहक यादृच्छिक रूप से उनमें से एक का चयन करें और आईपी पते से कनेक्ट करें, न कि मेजबाननाम। मैं ओपनएसएसएल को कॉल करने के लिए सामान्य नाम फ़ील्ड की जांच करता हूं, इसलिए मैं example.com के साथ सामान्य नाम प्रमाण पत्र की तुलना कर सकता हूं, अगर यह ठीक है, तो मैं प्रमाणपत्र स्वीकार करूंगा। मैंने नहीं देखा है कि libcurl का समर्थन करता है इसलिए मुझे लगता है कि मुझे अपना खुद का कार्यान्वयन लिखना है। Example.com के लिए प्रमाणपत्र एक विश्वसनीय Verisign प्रमाण है। – user1782427