2017-10-23 1 views
1

So ist der Titel ziemlich einfach. Ich möchte einen Webservice von einer Firma konsumieren und habe .cer und .p12 Dateien. Angeblich sollte ich .p12 verwenden, wenn ich eine Anfrage mache. Ich habe .cer in Windows importiert und ich kann Anfragen mit Postboten leicht machen. Aber wenn ich versuche, eine Anfrage mit node.js zu machen, bekomme ich Fehler. Hier ist der Code, ich verwende request Modul:Nodejs Anfrage an einen Web-Service mit .p12-Zertifikat

var headersOpt = { 
    "content-type": "application/json", 
}; 

var options = { 
    url: 'https://some-url/api', 
    cert: fs.readFileSync(__dirname + '/certs/myCert.p12'), 
    headers: headersOpt 
}; 

request.get(options, (error, response, body) => { 
    console.log(error); 
    console.log(response); 
    console.log(body); 
}); 

ich diesen Fehler:

{ Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Object.createSecureContext (_tls_common.js:89:17) 
    at Object.exports.connect (_tls_wrap.js:1048:48) 
    at Agent.createConnection (https.js:111:22) 
    at Agent.createSocket (_http_agent.js:224:26) 
    at Agent.addRequest (_http_agent.js:192:10) 
    at new ClientRequest (_http_client.js:256:16) 
    at Object.request (http.js:39:10) 
    at Object.request (https.js:239:15) 
    at Request.start (D:\parser\node_modules\request\request.js:748:32) 
    at Request.end (D:\parser\node_modules\request\request.js:1512:10) 
    opensslErrorStack: 
    [ 'error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib' ] } 

Antwort

2

Verwenden pfx Eigenschaft in agentOptions für pkcs12 Format:

'use strict'; 

const request = require('request'); 
const fs = require('fs'); 

var options = { 
    url: 'https://some-url/api', 
    headers: { 
     "content-type": "application/json", 
    }, 
    agentOptions: { 
     pfx: fs.readFileSync(__dirname + '/certs/myCert.p12'), 
     passphrase: '' 
    } 
}; 

request.get(options, (error, response, body) => { 
    console.log(error); 
    console.log(response); 
    console.log(body); 
}); 

Wenn Ihr Zertifikat selbstsigniert, überprüfen this

+0

tha Nein, das hat das Problem gelöst. es hat immer noch nicht funktioniert, und ich habe diese Version ein paar Mal zuvor versucht, aber dann dachte ich, ich habe das falsche Passwort bekommen. Wie auch immer, danke, dass du auf die richtige Vorgehensweise hingewiesen hast, damit ich mich auf andere Dinge konzentrieren kann, anstatt verschiedene Kombinationen auszuprobieren! – uglycode

Verwandte Themen