Je souhaite effectuer une validation personnalisée pour la vérification du certificat https node. Ainsi, dans les options https, j'ai défini la propriété rejectUnauthorized
sur false
.Lire les extensions critiques du certificat https
var httpsOptions = {
...
rejectUnauthorized: false,
...
};
Maintenant, même si la vérification du certificat échoue à l'interne, la demande ne manquera pas. Je veux gérer cette partie manuellement. Je voulais gérer l'erreur unhandled critical extension
. Mon code pour le faire est,
var req = https.request(httpsOptions, (res) => {
var data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end',() => {
console.log(data);
});
});
req.on("socket", function() {
req.socket.on('secureConnect',() => {
if(!req.socket.authorized){
if(req.socket.authorizationError === 'unhandled critical extension'){
// Place to verify extensions
}
process.nextTick(() => {req.abort();});
}
});
});
req.write(JSON.stringify(requestObj));
req.end();
Le code ci-dessus fonctionne comme prévu. Je peux dire quand unhandled critical extension
erreur se produit. Dans la condition if
(Place pour vérifier les extensions), je veux voir ce que tous les critical extensions
sont non gérées. Si elle ne correspond pas à la liste que j'ai, je veux annuler la demande. req.socket
a tellement de propriétés, donc je ne pouvais pas coller ici. Il n'y a aucun champ dedans, qui contient ces unhandled
extensions critiques. Comment extraire les extensions critiques non gérées qui ont provoqué l'erreur?
Note: J'ai vu quelques npm
paquets qui pourraient parser certificats ssl comme x509
et PKIjs
. Cela donne beaucoup de confusion et je n'ai pas trouvé d'exemple qui puisse résoudre mon problème.
EDIT:
req.socket.getPeerCertificate().raw
donne le certificat DER au format Buffer
. Comment le décoder et voir ces extensions?