如何在Node.js web应用程序中访问原始(或完整)X509证书?
How do I access the raw (or full) X509 Certificate in a Node.js web app
给定一个简单的Node.js应用:
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('mykey.pem'),
cert: fs.readFileSync('mycert.pem')
};
https.createServer(options, function (req, res) {
console.log(req.connection.getPeerCertificate());
res.writeHead(200);
res.end("hello world'n");
}).listen(8000);
导致以表示证书的形式输出到控制台,而不是原始(PEM)格式。
是否有其他方法可以访问原始文件?
getPeerCertificate
返回的证书对象有一个raw
字段,其中包含证书的DER编码。
你可以直接使用DER编码:
const cert_der = req.connection.getPeerCertificate().raw;
console.log(cert_der);
一般来说,使用DER编码就足够了。但是,如果需要PEM编码,可以通过对DER编码应用base64编码来构造它:
const os = require('os');
function der_to_pem(der) {
const header = '-----BEGIN CERTIFICATE-----';
const footer = '-----END CERTIFICATE-----';
return [header, der.toString('base64'), footer].join(os.EOL);
}
您可以使用这个辅助函数来获取客户端证书的PEM编码:
const cert_der = req.connection.getPeerCertificate().raw;
console.log(der_to_pem(cert_der));
相关文章:
- 在nginx错误495(错误的客户端证书)上提供Rails资产管道中的样式表
- 节点证书存储,节点仅从硬编码的证书列表中读取
- 如何在.NET或JavaScript中使用MS-XCEP和MS-WSTEP从AD CS获得证书
- 现场Jquery Ajax的SSL证书不正确
- xmlhttprequest:网络错误0x800c0019,访问此资源所需的安全证书无效.WINJS
- Ajax调用中的证书固定
- 使用 javascript 访问浏览器证书存储
- 通过 JavaScript 发送客户端证书
- 在 Mozilla 和 Chrome 中安装证书
- 如何在浏览器中生成受信任的证书
- 如何在节点中使用 x.509 证书验证 JWT 令牌
- RSA 签名验证,无证书 JavaScript
- 如何在 javascript 中接受未签名的证书
- 本地主机的自签名SSL证书,如何建立可信
- 是否可以在浏览器中生成SSL证书
- 是否可以在浏览器中以编程方式对证书进行签名
- Meteor.js使用X509证书身份验证连接到Mongo
- 使用X509证书验证Docusign Connect签名
- 如何使用Javascript/JQuery使用X509证书进行REST请求
- 如何在Node.js web应用程序中访问原始(或完整)X509证书?