Должен ли я делать цепочку сертификатов? Я сталкивался с этой проблемой последние 2 дня, но не смог ее выяснить.
Моя компания использует внутренний самозаверяющий сертификат для проверки подписей при входе. Однажды я создаю сервис, который я ограничиваю определенными пользователями. Этот вызов будет передан в БД, поэтому мы хотим убедиться, что он поступает из проверенного источника, т.е. моего собственного самозаверяющего сертификата. У меня есть центр сертификации, но мне нужно проверить его по определенному пути. Вот где я слушаю сертификат компании по умолчанию:
var httpsServer = https.createServer(httpsOptions, app);
httpsServer.listen(process.env.PORT);
Сертификаты по умолчанию уже передаются через httpsOptions. Там я тоже не могу подкрепить свои сертификаты. Как только это было сделано, я подумал о том, как я мог бы пройти свой собственный сертификат.
router.post('/subpath', async function(req, res) {
console.log("In subpath");
const cert = req.connection.getPeerCertificate();
if(req.client.authorized) {
res.send(`Hello ${cert.subject.CN}, your certificate was issued by ${cert.issuer.CN}`)
}
else if(cert.subject) {
res.status(403).send(`Sorry, ${cert.subject.CN}, certificates issued by ${cert.issuer.CN} are not welcome here`);
}
else {
res.status(401).send(`Sorry, pls send cert`);
}
console.log(req.connection.remoteAddress + ' ' +
req.method + ' ' +
req.url
);
const request = req.body;
// some response here
res.json(...);
});
module.exports = router;
Одна вещь, которую я попробовал, но не сработала, была (в index.js):
httpsServer.listen(process.env.PORT)
.on('listening', function() {
CHILD = 'yes';
PORT = this.address().port;
NODE_EXTRA_CA_CERTS = '/pathToCertificate/ca-crt.pem';
});
Этот конкретный вызов поступил от пост-вызова cURL. Как я могу проверить входящий сертификат? Любая помощь приветствуется! Спасибо!
Обновление: я также попытался передать функцию обратного вызова в маршрутизаторе для проверки сертификата через некоторое промежуточное программное обеспечение, но столкнулся с той же проблемой, то есть, как я могу получить сертификат и проверить его?