【问题标题】:node JS unable to verify the first certificatenode JS 无法验证第一个证书
【发布时间】:2021-06-15 22:41:42
【问题描述】:

我必须从某人设置的服务器获取令牌,但是当我尝试获取它时,我得到“错误:无法验证第一个证书”。 我在网上浏览了答案并找到了一些关于 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);

【问题讨论】:

    标签: node.js oauth-2.0 request token


    【解决方案1】:

    NodeJS 使用自己的信任库,与操作系统的信任库分开。 部分服务器使用NodeJS不信任的根证书,此时需要设置NODE_EXTRA_CA_CERTS环境变量,并添加证书颁发者的公钥。

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

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

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

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

    更多信息请参阅我在 Developer SSL Trust Troubleshooting 上的博文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 2021-10-20
      • 2021-01-02
      • 2020-02-17
      • 2021-03-26
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多