繁体   English   中英

node JS 无法验证第一个证书

[英]node JS unable to verify the first certificate

我必须从某人设置的服务器获取令牌,但是当我尝试获取它时,我得到“错误:无法验证第一个证书”。 我浏览了 web 寻找答案,发现了一些关于 globalAgent 的信息,但我不知道如何在我的代码中实现它。 一些帮助将不胜感激。 这是我的代码:

var request = require('request');

var options = {
    url: 'NEEDED_URL',
    method: 'POST',
    headers: {'content-type': 'application/x-www-from-urlencoded'},
    data: {
        grant_type: 'client_credentials',
        client_id: 'YOUR_CLIENT_ID',
        client_secret: 'YOUR_CLIENT_SECRET',
        scope: 'YOUR_SCOPE'
    }
  };

  function callback(error, body) {
    if (!error) {
      console.log(body);
    }

    else {
      console.log("error: " + error);
    }
  }

  request(options, callback);

NodeJS 使用自己的信任库,与操作系统的信任库分开。 一些服务器使用 NodeJS 不信任的根证书,在这种情况下,您需要设置 NODE_EXTRA_CA_CERTS 环境变量,并添加证书颁发者的公钥。

例如,我的 MacOS 系统的 .zprofile 文件中有这样一行,代表一个证书包:

export NODE_EXTRA_CA_CERTS=/Users/gary/certs/trusted.ca.pem

文件本身看起来像这样(为清楚起见缩短了)。 仅当使用其中一种有效时才需要这样做:

  • 您正在使用自签名证书
  • 您正在使用 HTTP 代理来查看解密的 HTTPS 流量
  • 您正在使用贵公司颁发的证书
  • 贵公司使用替换目标站点根证书的企业SSL防火墙过滤器

更多信息请参阅我关于开发人员 SSL 信任故障排除的博文。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM