node.js - node-forge 库 crl 分发列表不正确
问题描述
我正在使用 node-forge 库在 nodejs 中尝试以下代码。
const cert = fs.readFileSync("test.cer")
const cCert = pki.certificateFromPem(cert)
const basicConstraints= cCert.extensions.find(item => item.name === 'basicConstraints')
console.log(basicConstraints.value);
输出是:
0z0$\u0006\b+\u0006\u0001\u0005\u0005\u00070\u0001\u0018http://ocsp.digicert.com0R\u0006\b+\u0006\u0001\u0005\u0005\u00070\u0002Fhttp://...digiCA.crt
我怎样才能转换成正确的价值?
解决方案
您可以使用解析扩展值asn1.fromDer
并遍历树以收集 CRL 分发点:
const pki = require('node-forge').pki;
const asn1 = require('node-forge').asn1;
const fs = require('fs');
const cert = fs.readFileSync("test.cer");
const cCert = pki.certificateFromPem(cert);
const distributionPoints = [];
const getDistributionPoints = (node) => {
if (typeof node === 'string') {
distributionPoints.push(node);
return;
}
if (Array.isArray(node)) {
node.forEach(getDistributionPoints);
return;
}
if (node && typeof node === 'object') {
getDistributionPoints(node.value)
}
}
const ext = cCert.getExtension('cRLDistributionPoints');
getDistributionPoints(asn1.fromDer(ext.value))
console.log(distributionPoints);
推荐阅读
- mysql - 使用 MySQL 或 H2 将空值替换为列中的最新值
- asp.net-core - NSwag + System.InvalidOperationException:路径'/Site'上的方法'get'被多次注册
- python - 用预定义的平均值对向量进行归一化
- json - 在 Ansible json_query 中使用项目
- javascript - VS Code React 构建消息
- amazon-web-services - 无法从 Python Lambda 函数 PUT 到 DynamoDB
- css - 如何摆脱嵌套在 ImageBackground 中的透明图像背景 - 反应原生
- reactjs - 如何使用 apollo graphql 查询初始化 useState
- node.js - Mongoose - 如何返回两种不同事物的计数?
- javascript - 无法在 react.js 中读取 pdf 缓冲区