如何在NodeJS中传递多个自签名证书?

时间:2019-11-01 01:38:59

标签: node.js ssl openssl ssl-certificate

我绝对必须进行证书链接吗?最近两天我一直在解决这个问题,但一直无法解决。

我的公司使用内部自签名证书来验证登录签名。进入后,我将建立一个仅限某些用户的服务。此调用将传递给数据库,因此我们要确保它来自经过验证的来源,即我自己的自签名证书。我具有证书颁发机构,但需要在特定路径上对其进行验证。这是我正在监听默认公司证书的地方:

   var httpsServer = https.createServer(httpsOptions, app);
   httpsServer.listen(process.env.PORT);

默认证书已经通过httpsOptions传递。我也不能在这里piggy带我自己的证书。 完成此操作后,我考虑了如何通过自己的证书。

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帖子呼叫。如何验证传入的证书?任何帮助表示赞赏!谢谢!

更新:我还尝试通过一些中间件在路由器中传递一个回调函数来验证证书,但是遇到了同样的问题,即我如何接收证书并对其进行验证?

0 个答案:

没有答案