我正在尝试从文件中加载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)
我从工作存储库中检查了这一点,我知道这适用于它的原始作者。出于某种原因,我的设置没有运行它。
答案 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