Node.js - crypto.js - PFX标题太长了

时间:2014-06-24 17:14:19

标签: javascript node.js https pfx

我正在尝试从文件中加载PFX和密码,以便我可以发出HTTPS请求。在我开始之前,我已经知道PFX是好的,这不是问题。

我正在做以下事情:

config.options.pfx = fs.readFileSync('file.pfx');
config.options.passphrase = 'passphrase';

我将选项传递给代理人。

config.options.agent = new https.Agent(options);

然后我尝试构建rquest,我收到以下错误:

crypto.js:143
      c.context.loadPKCS12(pfx, passphrase);
            ^
Error: header too long
    at Object.exports.createCredentials (crypto.js:143:17)
    at Object.exports.connect (tls.js:1334:27)
    at Agent.createConnection (https.js:79:14)
    at Agent.createSocket (http.js:1293:16)
    at Agent.addRequest (http.js:1269:23)
    at new ClientRequest (http.js:1416:16)
    at Object.exports.request (https.js:123:10)

我从工作存储库中检查了这一点,我知道这适用于它的原始作者。出于某种原因,我的设置没有运行它。

2 个答案:

答案 0 :(得分:11)

我有类似的问题。事实证明我使用的是fs.readFileSync('file.pfx', 'utf8'),这对于PEM文件是正确的,但由于PKCS12文件是二进制文件,因此您应该传入fs.readFileSync('file.pfx')

答案 1 :(得分:1)

我遇到了同样的问题但在我的情况下我正在使用

pfx: fs.readFileSync('certs/keystore.p12')

在我的情况下,问题是我使用的pfx没有从jks正确生成。使用keytool导出是正确的解决方案

keytool -v -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -deststoretype PKCS12