Node.js https.request继续获得UNABLE_TO_VERIFY_LEAF_SIGNATURE

时间:2015-10-15 11:32:53

标签: node.js ssl

所以我现在已经坚持这个问题一段时间了,无论我尝试什么,我都会收到以下套接字错误" UNABLE_TO_VERIFY_LEAF_SIGNATURE"

this.options = {
    method: 'PUT',
    host: **host**,
    port: **port**,
    ca: fs.readFileSync(__dirname + '/configs/certs/' + serverConfig.environment + "/cert.cer"),
    pfx: fs.readFileSync(__dirname + '/configs/certs/' + serverConfig.environment + "/cert.pfx"),
    passphrase: 'thepassphrase',
    rejectUnauthorized: false,
    strictSSL: false
};

function sendRequest (options, isSSL, callback) {

    var returnData = '', req;

    function getResponse(response) {
        response.on('data', function (chunk) {
            returnData += chunk;
        });

        response.on('end', function () {
            callback(null, returnData);
        });
    }

    var sendData = JSON.stringify(data);

    if (isSSL) {
         req = https.request(options, getResponse);
    } else {
         req = http.request(options, getResponse);
    }
    req.write(sendData);
    req.end();

    req.on('error', function (e) {
       callback(e.message, null);
    });
}

sendRequest(this.options, true, function (err, result){
 ...
}

getResponse函数中的响应对象返回返回500和主题行中提到的错误。我使用的是Node.js 0.12。

任何帮助都将不胜感激。

问候。

1 个答案:

答案 0 :(得分:2)

如果尝试连接到使用由中间CA签名的证书的主机,则会发生此错误。 您可以通过设置

来解决此问题
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

许多模块(如请求模块)也支持选项rejectUnauthorized: false以避免此问题。

但由于安全问题,不建议在生产中使用。