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),我的證書上的代碼給出了正確的結果。 –