2014-06-25 4 views
1

J'ai configuré un serveur HTTPS node.js, mais j'ai du mal à comprendre comment l'utiliser correctement.Node.js Authentification SSL

app.get('/test', function(req, res){ 
    console.log('got in'); 
    if(req.client.authorized){ 
     res.send(200, 'certified'); 
    }else{ 
     res.send(200, 'idk who you are'); 
    } 
}); 

require('https').createServer({ 
    key: fs.readFileSync('key.pem'), 
    cert: fs.readFileSync('cert.pem'), 
    requestCert: true, 
    rejectUnauthorized: false 
}, app).listen(8080); 

Que doit faire le client pour être 'autorisé' sur mon serveur?

Je peux parcourir pour

https://localhost:8080/test 

et il me dit que mon certificat n'est pas digne de confiance (qui est correct, le SSL est auto-signé pour l'instant.). Je continue de toute façon mais je vais toujours à "idk qui vous êtes", ce qui signifie que l'authentification SSL a échoué. Je suis assez sûr que je manque une étape ici. P. P., si c'est important, je suis en train de configurer SSL à des fins de cryptage.

+0

req.client.authorized quel est-il? Peut-être que ce n'est pas défini, c'est pourquoi vous obtenez toujours "idk qui vous êtes". – Edgar

+0

il console les journaux à faux –

Répondre

1

La propriété authorized est définie sur false car le certificat fourni par le client n'est pas signé par une autorité de certification approuvée. Être comme rejectUnauthorized est faux, la connexion n'est pas rejetée, elle est plutôt marquée comme non autorisée.

Voir ici - https://github.com/joyent/node/blob/master/lib/_tls_wrap.js#L512