Questo programma di test si connette a un server HTTPS e ottiene alcuni contenuti. Ho controllato il mio server nei browser e con arricciatura e il certificato funziona correttamente. Se eseguo curl per prelevare dati dal server, si lamenta correttamente del fatto che il certificato sia sconosciuto a meno che non lo passi con --cacert o disattivi la sicurezza con -k.I miei node.js https client funziona sempre indipendentemente dalla validità del certificato
Così il problema che sto avendo è che anche se penso che il mio cliente dovrebbe fare l'autenticazione dei certificati e sto dicendo che se il certificato pubblico è, funziona sempre. Se rimuovo l'opzione ca: quindi non ha idea di cosa sia il certificato dal server, quindi funziona silenziosamente. Vorrei rilevare l'errore di autenticazione ma non riesco a farlo.
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 è stato aggiunto nella versione 0.7.0 –
Guardando i documenti: http://nodejs.org/api/tls.html, non c'è indicazione che "rejectUnauthorized" è stato aggiunto per client ... per server sì ma non client. .. puoi per favore ambientarmi sulla strada giusta qui? Sto guardando documenti scaduti qui? – pulkitsinghal
L'elenco delle modifiche si trova nella risposta sopra. Il problema è stato tracciato qui https://github.com/joyent/node/issues/2247 Non ho ancora visto se la documentazione è stata aggiornata, mi dispiace. – justinhj