यह करना rejectUnauthorized: false
या process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
ना करना बहुत लुभावना हो सकता है! यह आपको मध्य हमलों में आदमी को उजागर करता है।
अन्य उत्तर सही हैं कि मुद्दा इस तथ्य में निहित है कि आपका प्रमाण पत्र "एक मध्यस्थ सीए द्वारा हस्ताक्षरित है।" इसका एक आसान समाधान है, जिसे किसी तीसरे पक्ष के पुस्तकालय की आवश्यकता नहीं होती है ssl-root-cas
या किसी अतिरिक्त सीए को नोड में इंजेक्ट करने की आवश्यकता नहीं है ।
नोड समर्थन विकल्पों में अधिकांश https क्लाइंट आपको अनुरोध प्रति CA निर्दिष्ट करने की अनुमति देते हैं, जो हल करेगा UNABLE_TO_VERIFY_LEAF_SIGNATURE
। यहां नोड के अंतर्निहित इंट https
मॉड्यूल का उपयोग करके एक सरल उदाहरण दिया गया है ।
import https from 'https';
const options = {
host: '<your host>',
defaultPort: 443,
path: '<your path>',
// assuming the bundle file is co-located with this file
ca: readFileSync(__dirname + '/<your bundle file>.ca-bundle'),
headers: {
'content-type': 'application/json',
}
};
https.get(options, res => {
// do whatever you need to do
})
यदि, हालाँकि, आप अपने होस्टिंग सर्वर में ssl सेटिंग्स को कॉन्फ़िगर कर सकते हैं, तो सबसे अच्छा समाधान यह होगा कि आप अपने होस्टिंग प्रदाता से इंटरमीडिएट प्रमाणपत्र जोड़ दें। इस तरह क्लाइंट रिक्वायरमेंट को CA निर्दिष्ट करने की आवश्यकता नहीं है, क्योंकि यह सर्वर में ही शामिल है। मैं व्यक्तिगत रूप से namecheap + heroku का उपयोग करता हूं। मेरे लिए चाल एक .crt फ़ाइल बनाने की थी cat yourcertificate.crt bundle.ca-bundle > server.crt
। मैंने तब इस फ़ाइल को खोला और पहले प्रमाण पत्र के बाद एक नई पंक्ति जोड़ी। आप और अधिक पढ़ सकते हैं
https://www.namecheap.com/support/knowledgebase/article.aspx/10050/33/installing-an-ssl-certificate-on-heroku-ssl