Chương trình thử nghiệm này kết nối với máy chủ https và nhận một số nội dung. Tôi đã kiểm tra máy chủ của mình trong trình duyệt và với curl và chứng chỉ đang hoạt động chính xác. Nếu tôi chạy curl để lấy dữ liệu từ máy chủ, nó chính xác phàn nàn về chứng chỉ chưa được biết trừ khi tôi chuyển nó vào với --cacert hoặc tắt bảo mật bằng -k.Ứng dụng https node.js của tôi luôn hoạt động bất kể giá trị của chứng chỉ
Vì vậy, vấn đề tôi gặp phải là mặc dù tôi nghĩ rằng khách hàng của tôi phải thực hiện xác thực chứng chỉ và tôi đang nói nó ở đâu chứng chỉ công khai, nó luôn hoạt động. Nếu tôi loại bỏ ca: tùy chọn để nó không có ý tưởng những gì chứng chỉ là từ máy chủ sau đó nó âm thầm hoạt động. Tôi muốn bắt lỗi xác thực nhưng tôi không thể làm như vậy.
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();
rejectUnauthorized được thêm vào trong phiên bản 0.7.0 –
Nhìn vào tài liệu: http://nodejs.org/api/tls.html, không có dấu hiệu nào cho thấy rằng 'rejectUnauthorized' đã được thêm vào cho máy khách ... cho máy chủ có nhưng không phải là máy khách. .. bạn có thể vui lòng đặt tôi trên con đường bên phải ở đây không? Tôi có đang xem tài liệu lỗi thời ở đây không? – pulkitsinghal
Danh sách thay đổi nằm trong câu trả lời ở trên. Vấn đề đã được theo dõi ở đây https://github.com/joyent/node/issues/2247 Tôi đã không xem xét liệu các tài liệu được cập nhật mặc dù, xin lỗi. – justinhj