0
我有p12
文件,我应该得到X.509证书。为了与此文件的工作我用forge
库:节点JS,如何从P12文件中提取X.509证书?
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和伪造0.6.45),我的证书上的代码给出了正确的结果。 –