Ten program testowy łączy się z serwerem https i dostaje jakąś treść. Sprawdziłem mój serwer w przeglądarkach z curl i certyfikat działa poprawnie. Jeśli uruchomię curl, aby pobrać dane z serwera, poprawnie narzeka, że certyfikat jest nieznany, chyba że podaję go z --cacert lub wyłączę zabezpieczenie przy pomocy -k.Moi node.js https klient zawsze działa niezależnie od ważności certyfikatu
Tak więc problem mam jest to, że chociaż myślę, że mój klient powinien robić uwierzytelniania certyfikatów i mówię to gdzie certyfikat publiczny, po prostu zawsze działa. Jeśli usuniemy opcję ca :, więc nie ma ona pojęcia, co to jest certyfikat z serwera, działa on po cichu. Chciałbym złapać błąd uwierzytelniania, ale nie mogę tego zrobić.
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();
rejectUnautoryzacja została dodana w wersji 0.7.0 –
Patrząc na dokumenty: http://nodejs.org/api/tls.html, nic nie wskazuje na to, że 'rejectUnautoryzowany' został dodany dla klienta ... dla serwera tak, ale nie dla klienta. .. czy możesz ustawić mnie na właściwej ścieżce? Czy patrzę tutaj na nieaktualne dokumenty? – pulkitsinghal
Lista zmian znajduje się w powyższej odpowiedzi. Problem został wyśledzony tutaj https://github.com/joyent/node/issues/2247 Nie sprawdziłem, czy dokumentacja została zaktualizowana, przepraszam. – justinhj