NodeJS' DEPTH_ZERO_SELF_SIGNED_CERT'

时间:2016-04-05 14:09:43

标签: node.js ssl certificate ssl-certificate

当我尝试使用我正在写的node.js客户端连接到网络服务器时,我收到了上述错误。

但是当我尝试连接服务器时出现错误。

'DEPTH_ZERO_SELF_SIGNED_CERT'

这是发送请求的代码。并且关闭证书检查不是有效选项。我需要保护连接。

var options = 
    {
        hostname: baseUri,
        port: 443,
        path: 'oauth',
        method: 'POST',
        requestCert: true,
        ca:fs.readFileSync('Comodo_PositiveSSL_bundle.crt'),
        rejectUnauthorized: true,
        headers: {
            //'User-Agent': USER_AGENT,
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': data.length
        }
    };

    var req = http.request(options, (res) => {
      console.log('statusCode: ', res.statusCode);
      console.log('headers: ', res.headers);

      res.on('data', (d) => {
        process.stdout.write(d);
      });
    });

    req.write(data)
    req.end();

    req.on('error', (e) => {
      console.error(e);
    });

如果有人可以告诉我如何设置认证正确,那么不会产生错误?

证书包的图片。如您所见,捆绑包仅包含需要验证服务器自身提供的证书的根证书。

Cert bundle

2 个答案:

答案 0 :(得分:0)

问题通过以下代码解决。我添加了options.agent = http.Agent(options);,这解决了问题。

因此,对于尝试向安全服务器进行身份验证并获得上述错误的所有人来说,这可能是您的解决方案。下面我添加了上面编辑的代码。

var options = 
        {
            hostname: baseUri,
            port: 443,
            path: 'oauth',
            method: 'POST',
            requestCert: true,
            headers: {
                //'User-Agent': USER_AGENT,
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': data.length
            }
        };
        options.agent = http.Agent(options);

        var req = http.request(options, (res) => {
          console.log('statusCode: ', res.statusCode);
          console.log('headers: ', res.headers);

          res.on('data', (d) => {
            process.stdout.write(d);
          });
        });

        req.write(data)
        req.end();

        req.on('error', (e) => {
          console.error(e);
        });

答案 1 :(得分:0)

npm config set strict-ssl false 适用于npm托管项目