【发布时间】:2017-04-13 08:36:23
【问题描述】:
我有 p12 文件,我应该在其中获得 X.509 证书。为了使用这个文件,我使用forge library:
var forge = require('node-forge');
var fs = require('fs');
var keyFile = fs.readFileSync("/path/to/p12/file.p12", 'binary');
var p12Asn1 = forge.asn1.fromDer(keyFile);
var p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, 'password');
var bags = p12.getBags({bagType: forge.pki.oids.certBag});
var cert = bags[forge.pki.oids.certBag][0];
console.log(cert);
控制台向我输出此类信息:
{ type: '1.2.840.113549.1.12.10.1.3',
attributes:
{ localKeyId: [ 'aoa ??xx\u0015-?]%m§ §\f,\u0013' ],
friendlyName: [ 'e56fe5a0899f787815adaf5d256da7a0a70c2c13' ] },
cert: null,
asn1:
{ tagClass: 0,
type: 16,
constructed: true,
composed: true,
value: [ [Object], [Object], [Object] ] } }
这个结果意味着我有一个名为e56fe5a0899f787815adaf5d256da7a0a70c2c13的别名,但为什么cert是null?
有Java的安全api,可以通过它的别名从这个p12文件中提取X.509证书。
X509Certificate x509Certificate = (X509Certificate) ks.getCertificate(alias);
如何使用forge从p12文件中提取X.509证书?
节点版本5.4.1
锻造版0.6.45
在那里你可以下载我的测试p12文件:link
密码是123456
【问题讨论】:
-
你能出示这种行为的测试证书吗?
node.js和forge库的哪个版本? -
@stdob--我已经更新了我的答案。至于显示证书,你的意思是上传
p12文件? -
是的,如果可能的话。在我的环境(节点 5.4.1 和 forge 0.6.45)中,我证书上的代码给出了正确的结果。
-
@stdob-- 我已经更新了我的问题。
标签: javascript node.js security encryption x509