Как мне передать несколько самозаверяющих сертификатов в NodeJS? - PullRequest
0 голосов
/ 01 ноября 2019

Должен ли я делать цепочку сертификатов? Я сталкивался с этой проблемой последние 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. Как я могу проверить входящий сертификат? Любая помощь приветствуется! Спасибо!

Обновление: я также попытался передать функцию обратного вызова в маршрутизаторе для проверки сертификата через некоторое промежуточное программное обеспечение, но столкнулся с той же проблемой, то есть, как я могу получить сертификат и проверить его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...