user2017319
user2017319

Reputation: 87

SOAP request and "SSL routines:ssl3_read_bytes:sslv3 alert handshake failure"

I have a PFX file. I generated PEM and KEY file:

My Node.js configuration file looks like this:

var soap = require('soap'),
fs = require('fs');
var url = 'https://file.wsdl';
var auth = "Basic " + new Buffer("username" + ":" + "password").toString("base64");

soap.createClient( url, {wsdl_options: {

    cert: fs.readFileSync('cert/cert.pem'),
    key: fs.readFileSync('cert/cert.key'),
    strictSSL: false,
    rejectUnauthorized: false
},  wsdl_headers: {Authorization: auth}, endpoint : 'https://linkToPostHttpsRequest'}, function(err, client) {

if(err) {throw err;}

client.admGetSubscriber({input: {msisdn: asdasd}}, function(err, result){
    throw err;
    console.log(result);
});

Node.js show me throws me this error:

Error: write EPROTO 101057795:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake
failure:openssl\ssl\s3_pkt.c:1472:SSL alert number 40
101057795:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:openssl\ssl\s3_pkt.c:656:

    at exports._errnoException (util.js:1007:11)
    at WriteWrap.afterWrite (net.js:793:14)

I tried to import PFX certificate but getting the same error. Are there any other options that I should include?

Upvotes: 2

Views: 3603

Answers (1)

user7842
user7842

Reputation: 11

Try to add the request option 'ciphers': 'ALL'.

Code:

var soap = require('soap'),
    request = require('request'),
    fs = require('fs');
var url = 'https://file.wsdl';
var auth = "Basic " + new Buffer("username" + ":" + "password").toString("base64");

var request_with_defaults = request.defaults({ 'ciphers': 'ALL' });

soap.createClient(url, {

    request: request_with_defaults,
    wsdl_options: {

        cert: fs.readFileSync('cert/cert.pem'),
        key: fs.readFileSync('cert/cert.key'),
        strictSSL: false,
        rejectUnauthorized: false
    }, wsdl_headers: { Authorization: auth }, endpoint: 'https://linkToPostHttpsRequest'
}, function (err, client) {

    if (err) { throw err; }

    client.admGetSubscriber({ input: { msisdn: asdasd } }, function (err, result) {
        throw err;
        console.log(result);
    });
});

Upvotes: 1

Related Questions