javascript - https.request ignoring rejectUnauthorized - Stack Overflow

I'm trying to connect to a remote server using nodejs 0.12, and i keep getting the response SELF_S

I'm trying to connect to a remote server using nodejs 0.12, and i keep getting the response SELF_SIGNED_CERT_IN_CHAIN. I have looked at similar questions 1 2 but somehow their solutions don't work on my server.

I am connecting to a test environment outside of my control setted up with a self signed certificate. This is my request:

var https = require("https");
var fs = require('fs');

start();

function start()
{
    var listadebancos = 
    {
        language:"es",
        mand:"GET_BANKS_LIST",

        merchant:
        {
            apiLogin:"111111111111111",
            apiKey:"11111111111111111111111111",
        },

        test:true,
        bankListInformation:
        {
            paymentMethod:"PSE",
            paymentCountry:"CO"

        }
    };

    var listadebancosString = JSON.stringify(listadebancos);

    var headers = 
    {
        'Content-Type': 'application/json',
        'Content-Length': listadebancosString.length
    };

        var options= {
            host: 'stg.api.payulatam',
            rejectUnauthorized: false,
            agent:false,
            path: '/payments-api/4.0/service.cgi',
            method: 'POST',
            cert: fs.readFileSync('./stg.gateway.payulatam.crt'),

        }

        process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

        var req= https.request(options, funcionRespuesta);
        req.write(listadebancosString); 
        req.end();



        function funcionRespuesta(res) 
        {   console.log(res);
        }

    }

Am i missing something obvious?

I'm trying to connect to a remote server using nodejs 0.12, and i keep getting the response SELF_SIGNED_CERT_IN_CHAIN. I have looked at similar questions 1 2 but somehow their solutions don't work on my server.

I am connecting to a test environment outside of my control setted up with a self signed certificate. This is my request:

var https = require("https");
var fs = require('fs');

start();

function start()
{
    var listadebancos = 
    {
        language:"es",
        mand:"GET_BANKS_LIST",

        merchant:
        {
            apiLogin:"111111111111111",
            apiKey:"11111111111111111111111111",
        },

        test:true,
        bankListInformation:
        {
            paymentMethod:"PSE",
            paymentCountry:"CO"

        }
    };

    var listadebancosString = JSON.stringify(listadebancos);

    var headers = 
    {
        'Content-Type': 'application/json',
        'Content-Length': listadebancosString.length
    };

        var options= {
            host: 'stg.api.payulatam.',
            rejectUnauthorized: false,
            agent:false,
            path: '/payments-api/4.0/service.cgi',
            method: 'POST',
            cert: fs.readFileSync('./stg.gateway.payulatam.crt'),

        }

        process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

        var req= https.request(options, funcionRespuesta);
        req.write(listadebancosString); 
        req.end();



        function funcionRespuesta(res) 
        {   console.log(res);
        }

    }

Am i missing something obvious?

Share Improve this question edited May 23, 2017 at 12:06 CommunityBot 11 silver badge asked Apr 6, 2015 at 16:02 NicolasZNicolasZ 1,0234 gold badges12 silver badges26 bronze badges 4
  • remove and revoke the api keys. you need to either get the cert issuer to fix the cert or tell your http code to ignore the problem. I don't know how to do that with the stock http module; but with request you can pass an option strictSSL: false.also the cert option in https.request is a CLIENT cert. – Plato Commented Apr 7, 2015 at 2:30
  • i decided to use another library called needle and it solved the problem. Thanks for your suggestion anyway – NicolasZ Commented Apr 7, 2015 at 14:52
  • dude u still have a finance-related api key in your code, I am going to edit it out for you, but it is still visible to everyone on the internet forever in the edit history, so REVOKE it asap!! – Plato Commented Apr 7, 2015 at 15:50
  • Cheers! no worries, it is the public test key :) – NicolasZ Commented Apr 7, 2015 at 16:04
Add a ment  | 

1 Answer 1

Reset to default 4

I decided to use a library call needle to make the request and this time i was able to receive the response with no SSL errors. Just in case anyone is in the same situation here is the code i used:

var listadebancos = 
{
    "language":"es",
       "mand":"GET_BANKS_LIST",
       "merchant":{
          "apiLogin:"111111111111111",
          "apiKey:"11111111111111111111111111",
       },
       "test":false,
       "bankListInformation":{
          "paymentMethod":"PSE",
          "paymentCountry":"CO"
       }
};

};

// var listadebancosString = JSON.stringify(listadebancos);

var headers = 
{
    'Content-Type': 'application/json'
};

    var options = {
        host: 'stg.api.payulatam.',
        **json:true,**
        path: '/payments-api/4.0/service.cgi',
        method: 'GET',
        headers: headers,
        rejectUnauthorized: false,
        requestCert: true,
        agent: false,
        strictSSL: false,
    }       
    needle
      .post('stg.api.payulatam./payments-api/4.0/service.cgi',listadebancos, options, funcionRespuesta)
       .on('end', function() {
        console.log('Ready-o, friend-o.');
      })


    function funcionRespuesta(err, resp, body)
    {
        console.log(err);
        console.log(body);                  
    }

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744220102a4563740.html

相关推荐

  • javascript - https.request ignoring rejectUnauthorized - Stack Overflow

    I'm trying to connect to a remote server using nodejs 0.12, and i keep getting the response SELF_S

    8天前
    30

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信