Certificat P12 Erreur «Données insuffisantes»

J’essayais de me connecter à un ordinateur d’extrémité en toute sécurité à l’aide d’un fichier .p12 , mais l’erreur continue de se produire.

 _tls_common.js:136 c.context.loadPKCS12(pfx); ^ Error: not enough data at Error (native) at Object.createSecureContext (_tls_common.js:136:17) at Object.TLSSocket._init.ssl.onclienthello.ssl.oncertcb.exports.connect (_tls_wrap.js:1003:48) at Agent.createConnection (https.js:80:22) at Agent.createSocket (_http_agent.js:179:26) at Agent.addRequest (_http_agent.js:141:10) at new ClientRequest (_http_client.js:147:16) at Object.exports.request (http.js:31:10) at Object.exports.request (https.js:197:15) at Request.start (D:\path_to_project\node_modules\request\request.js:747:30) 

Le code qui génère l’erreur est le suivant:

  request({ method: 'POST', url: config.secureEndpoint.hostname + config.secureEndpoint.path, body: XMLAPIResponse.body, rejectUnauthorized: false, ssortingctSSL: false, agentOptions: { //pfx: pfx, pfx: 'ssortingng_path_to_the_p12_key_file.p12', passphrase: 'redacted_password' } }, function (error, response, body) { console.log(response); if (response.satusCode == 200) { model.updateStatus(ID, 'done'); } else { model.updateStatus(ID, 'error'); } }); 

J’ai essayé d’utiliser la méthode https.request mais cela donne le même résultat. J’ai cherché une solution sur le Web, mais je suis arrivé les mains vides.

D’après ce que je peux dire, c’est un problème avec la clé PFX \ P12 qui n’est peut-être pas si compliqué, vu que j’ai reçu la clé d’un tiers. La seule chose à laquelle je peux penser est de convertir le format de clé en utilisant openSSL et de voir si cela fonctionne. Toute suggestion ou aide serait grandement appréciée.

La réponse réside donc dans l’utilisation de l’API du module https. Comme indiqué dans la documentation https de Node.js , lorsque vous fournissez un fichier pfx, il doit être passé en tant que bytestream.

Vous devez lire le fichier et passer directement son contenu:

 request({ method: 'POST', url: config.secureEndpoint.hostname + config.secureEndpoint.path, body: XMLAPIResponse.body, rejectUnauthorized: false, ssortingctSSL: false, agentOptions: { //pfx: pfx, pfx: require('fs').readFileSync('ssortingng_path_to_the_p12_key_file.p12'), passphrase: 'redacted_password' } } 

J’espère que cela t’aides.