एक थोड़ा अद्यतन जवाब (के बाद से मैं विभिन्न परिस्थितियों में यह समस्या हुई थी।)
जब आप एक सर्वर SSL का उपयोग करने के लिए कनेक्ट, पहली बात यह है सर्वर करता है वर्तमान एक प्रमाण पत्र जो कहते हैं, "मैं एपीआई हूँ। dropbox.com। " प्रमाणपत्र में "विषय" है और इस विषय में "सीएन" ("सामान्य नाम" के लिए छोटा है।) प्रमाणपत्र में एक या अधिक "subjectAltNames" हो सकते हैं। जब node.js किसी सर्वर से कनेक्ट होता है, node.js इस प्रमाणपत्र को प्राप्त करता है, और तब सत्यापित करता है कि डोमेन नाम यह सोचता है कि यह कनेक्ट हो रहा है (api.dropbox.com) या तो विषय के सीएन या altnames में से एक से मेल खाता है। ध्यान दें कि, नोड 0.10.x में, यदि आप किसी आईपी का उपयोग कर कनेक्ट करते हैं, तो आईपी पता altnames में होना चाहिए - node.js सीएन के खिलाफ आईपी को सत्यापित करने की कोशिश नहीं करेगा।
rejectUnauthorized
झंडे को ध्वजांकित करने के लिए ध्वज को इस चेक के आसपास मिल जाएगा, लेकिन सबसे पहले यदि सर्वर आपको अपेक्षाकृत अलग-अलग प्रमाण-पत्र दे रहा है, तो कुछ ख़राब हो रहा है, और दूसरा यह अन्य चेक को भी बाधित करेगा - यह नहीं है यदि आप इंटरनेट पर कनेक्ट कर रहे हैं तो एक अच्छा विचार।
आप नोड> = 0.11.x का उपयोग कर रहे हैं, तो आप भी टीएलएस मॉड्यूल के लिए एक checkServerIdentity: function(host, cert)
समारोह है, जो undefined
लौटना चाहिए अगर आप कनेक्शन की अनुमति और यद्यपि मैं नहीं जानता कि अन्यथा एक अपवाद फेंक (करना चाहते हैं निर्दिष्ट कर सकते हैं यदि request
इस ध्वज को आपके लिए टीएलएस के माध्यम से प्रॉक्सी करेगा।) यह पता लगाने के लिए कि यह बिल्ली क्या चल रहा है, यह एक समारोह और console.log(host, cert);
घोषित करने के लिए आसान हो सकता है।
स्रोत
2015-01-21 15:56:09
पहली टिप्पणी के जवाब में था। – SLaks
धन्यवाद, मैं "ब्राउज़र समस्या" के बारे में समझता हूं) – mr0re1
लेकिन मुझे समझ में नहीं आता कि क्यों नोड 0.6.12 पर यह ठीक काम करता है, लेकिन नोड 0.9.4 पर यह त्रुटि फेंक देता है। – mr0re1