簡體   English   中英

使用javascript從p12文件獲取私鑰

[英]Getting the private key from p12 file using javascript

我需要從給出的p12文件中獲取私鑰。 我嘗試使用偽造庫並編寫了以下代碼。

var forge = require('node-forge');
var fs = require('fs');

var p12File = fs.readFileSync("C:/Users/macilamanym/Desktop/certs/mayoorancert.p12");
//var privateKey = p12ToPem(p12File, "qwerty");

var p12Der = forge.util.decode64(p12File);
// get p12 as ASN.1 object
var p12Asn1 = forge.asn1.fromDer(p12Der);
// decrypt p12 using the password 'password'
var p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, 'qwerty');

console.log(p12);

但是它拋出以下錯誤。

G:\Projects\Tests\NodeJSTest\node_modules\node-forge\js\util.js:1569
  input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
                ^

TypeError: input.replace is not a function
    at Object.util.decode64 (G:\Projects\Tests\NodeJSTest\node_modules\node-forge\js\util.js:1569:17)
    at Object.<anonymous> (G:\Projects\Tests\NodeJSTest\index.js:9:25)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:968:3

我在這里做錯了什么? 是否有更好的方法從p12文件中獲取私鑰? 請指教。

另外請注意,我只獲得了私鑰的密碼。 私鑰的名稱未知。 所以應該是一種解決方案,不需要我從p12中獲取私鑰名稱。

我可以使用以下方法從文件中獲取p12:

var forge = require('node-forge');
var fs = require('fs');

var keyFile = fs.readFileSync('path/to/your/p12/file.p12');
var keyBase64 = keyFile.toString('base64');


var p12Der = forge.util.decode64(keyBase64);

var p12Asn1 = forge.asn1.fromDer(p12Der);

var p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, 'password');

console.log(p12);

我通過fs獲得p12文件作為字符串並將其編碼為base64

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM