我绝对必须进行证书链接吗?最近两天我一直在解决这个问题,但一直无法解决。
我的公司使用内部自签名证书来验证登录签名。进入后,我将建立一个仅限某些用户的服务。此调用将传递给数据库,因此我们要确保它来自经过验证的来源,即我自己的自签名证书。我具有证书颁发机构,但需要在特定路径上对其进行验证。这是我正在监听默认公司证书的地方:
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帖子呼叫。如何验证传入的证书?任何帮助表示赞赏!谢谢!
更新:我还尝试通过一些中间件在路由器中传递一个回调函数来验证证书,但是遇到了同样的问题,即我如何接收证书并对其进行验证?