给定一个简单的 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 编码,您可以通过将 base64 编码应用于 DER 编码来构建它: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));
关于javascript - 如何在 Node.js Web 应用程序中访问原始(或完整)X509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24791300/