पर ध्यान दिए बिना काम करता है यह परीक्षण प्रोग्राम किसी https सर्वर से कनेक्ट होता है और कुछ सामग्री प्राप्त करता है। मैंने ब्राउज़र में और कर्ल के साथ अपना सर्वर चेक किया है और प्रमाणपत्र सही तरीके से काम कर रहा है। यदि मैं सर्वर से डेटा को पकड़ने के लिए कर्ल चलाता हूं तो यह प्रमाण पत्र अज्ञात होने के बारे में सही तरीके से शिकायत करता है जब तक कि मैं इसे --cacert के साथ पास नहीं करता या सुरक्षा को बंद कर देता हूं।मेरा node.js https क्लाइंट हमेशा प्रमाणपत्र वैधता
तो मेरी समस्या यह है कि हालांकि मुझे लगता है कि मेरा ग्राहक प्रमाण पत्र प्रमाणीकरण कर रहा है और मैं यह कह रहा हूं कि सार्वजनिक प्रमाणपत्र कहां है, यह हमेशा काम करता है। अगर मैं ca: विकल्प को हटा देता हूं तो उसे पता नहीं है कि प्रमाणपत्र सर्वर से क्या है, तो यह चुपचाप काम करता है। मैं प्रमाणीकरण त्रुटि पकड़ना चाहता हूं लेकिन मुझे ऐसा नहीं लगता है।
var https = require('https');
var fs = require('fs');
function main() {
var data = '';
var get = https.get({
path: '/',
host: 'localhost',
port: 8000,
agent: false,
ca: [ fs.readFileSync('https_simple/cacert.pem') ]
}, function(x) {
x.setEncoding('utf8');
x.on('data', function(c) {data += c});
x.on('error', function(e) {
throw e;
});
x.on('end', function() {
console.log('Hai!. Here is the response:');
console.log(data);
});
});
get.on('error', function(e) {throw e});
get.end();
}
main();
अस्वीकारअनुक्रमित संस्करण 0.7.0 –
में जोड़ा गया था दस्तावेज़ों को देखकर: http://nodejs.org/api/tls.html, इस बात का कोई संकेत नहीं है कि क्लाइंट के लिए 'अस्वीकार अज्ञात' जोड़ा गया था ... सर्वर के लिए हाँ, लेकिन क्लाइंट नहीं। .. क्या आप कृपया मुझे सही रास्ते पर सेट कर सकते हैं? क्या मैं यहां डेट डॉक्स देख रहा हूं? – pulkitsinghal
परिवर्तन सूची उपरोक्त उत्तर में है। इस मुद्दे को यहां ट्रैक किया गया था https://github.com/joyent/node/issues/2247 मैंने यह नहीं देखा है कि दस्तावेज अद्यतन किया गया था, क्षमा करें। – justinhj