Node JS 向具有所需 p12 证书的外部服务请求出错

Error by Node JS request to external service with required p12 certificat

有一项服务在某个URL下提供XML(例如:https://myxml)。该服务的组织向我发送了一个带有密码的 p12 证书。 在浏览器中它工作正常。 在我的本地机器上,我是 运行 一个 Node JS 服务器。我想从我的节点服务器发送请求并从服务中获取响应。

我对证​​书还很陌生。

这是我尝试从服务获取请求后得到的错误

error:0906D06C:PEM routines:PEM_read_bio:no start line

这是节点服务器中的实现

const request = require('request');
const fs = require('fs');
const path = require('path');
const certFile = path.resolve(__dirname, 'folder/cert.p12');

var options = {
  url: 'https://myxml',
  cert: fs.readFileSync(certFile),
  passphrase: 'xyz'
}


request.get(options);
request('https://myxml', function(error, response, body){
  console.log("error: ", error);
  console.log("statusCode: ", response && response.statusCode);
  console.log("body: ", body);
})

尝试以二进制形式读取文件并直接使用它

var p12 = fs.readFileSync('file.p12', 'binary');
var p12Asn1 = forge.asn1.fromDer(p12, false);
var p12Parsed = forge.pkcs12.pkcs12FromAsn1(p12Asn1, false, 'password');

同样在请求中添加agentOptions

request({
    method: 'GET',
    url: 'https://myxml',
    rejectUnauthorized: false,
    strictSSL: false, 
    agentOptions: {
        //pfx: pfx,
        pfx: require('fs').readFileSync('string_path_to_the_p12_key_file.p12'),
        passphrase: 'redacted_password'
    }
}