ノードhttps証明書検証のカスタム検証を行います。 httpsオプションでrejectUnauthorized
プロパティをfalse
に設定しました。https証明書から重要な拡張機能を読み取る
var httpsOptions = {
...
rejectUnauthorized: false,
...
};
証明書の検証が内部的に失敗した場合でも、要求は失敗しません。私は手動でその部分を扱いたい。私はunhandled critical extension
エラーを処理したかった。これを行うコードは、
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();
上記のコードは期待どおりです。 unhandled critical extension
エラーが発生したとき、私は言うことができます。 if
の条件(拡張子を確認する場所)の中で、処理されていないものはすべてcritical extensions
です。それが私が持っているリストと一致しない場合、私は要求を中止したい。 req.socket
には非常に多くのプロパティがあるので、ここに貼り付けることができませんでした。それにはunhandled
の重要な拡張子を持つフィールドはありません。どのようにエラーを引き起こした未処理の重要な拡張子を抽出するのですか?
注:私はx509
とPKIjs
などのSSL証明書を解析することができ、いくつかのnpm
パッケージを見てきました。それは多くの混乱をもたらし、私は自分の問題を解決できる実例を見つけることができませんでした。
EDIT:
req.socket.getPeerCertificate().raw
Buffer
形式のDER証明書を提供します。どのようにデコードし、それらの拡張子を表示するのですか?