Node.js:访问客户端证书
我正在开发一个Node.js应用程序,我们称之为“服务器a”,用户必须提供客户端证书才能访问服务 简化示例:Node.js:访问客户端证书,node.js,ssl,Node.js,Ssl,我正在开发一个Node.js应用程序,我们称之为“服务器a”,用户必须提供客户端证书才能访问服务 简化示例: /** server setup **/ var serverOptions = { key: fs.readFileSync('certs/server.key'), cert: fs.readFileSync('certs/server.crt'), ca: [fs.readFileSync('certs/ca.crt'), fs.readFileSync('
/** server setup **/
var serverOptions = {
key: fs.readFileSync('certs/server.key'),
cert: fs.readFileSync('certs/server.crt'),
ca: [fs.readFileSync('certs/ca.crt'), fs.readFileSync('certs/bar.cer'), fs.readFileSync('certs/foo.cer')],
requestCert: true
};
https.createServer(serverOptions, app).listen(SERVER_PORT, '', null, function () {
var host = this.address().address;
var port = this.address().port;
console.log('listening at http://%s:%s', host, port);
});
一切正常,下面的代码打印客户机证书的详细信息
app.get('/', function (req, res) {
/*** Dump ***/
res.contentType('application/json');
res.send(util.inspect(req.socket.getPeerCertificate(true), {colors: true}));
});
但是,我希望能够使用在serverA中获得的这个客户端证书,向另一个名为“ServerB”的服务器发出请求
问题是,我没有找到一种使用getPeerCertificate函数获取正确X509证书的方法,该函数返回证书的“自定义”对象表示形式。
如中所述,cert参数必须提供以下数据:
要使用的公共x509证书。默认为空
有没有办法获得正确格式的客户端证书呢?我遇到了同样的问题,看到你的问题没有答案,所以我回来发布我的解决方案 证书对象有一个
raw
字段,其中包含您想要的字节形式的证书数据。要获得X509格式,只需将其转换为base64即可。因此,您要查找的代码是:
req.socket.getPeerCertificate(true).raw.toString('base64');
希望有帮助 这有帮助!谢谢你,侯赛因
req.socket.getPeerCertificate(true).raw.toString('base64');