执行HTTPS请求时,cert_untrusted错误



我正在尝试从我的 node服务器 side执行https request,但它给了我以下错误: -

Caught exception: Error: CERT_UNTRUSTED

如果我执行http request,则可以正常工作,但是对于https links 它不起作用

这是我的代码: -

var request = require('request');
request('https://en.m.wikipedia.org/wiki/Astrid_Olofsdotter_of_Sweden', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
  }
})

有什么想法?

这可能取决于许多事情,IVE运行您的代码,对我来说很好

node --version
v0.12.5

所以我会看

  1. 您正在使用的nodejs版本

定期更新了根证书,我建议您进行更新

  1. 网络 - 您有可能在代理人后面对您的请求做出意外的事情

  2. 目标服务器,它可能会返回一些意外的东西。

最有可能的是1,您使用的是nodejs的版本,该版本无法识别网站的证书提供商,因此说其不受信任。

我将2和3放在相同水平的可能性上。如果您是在蜘蛛网上,他们可能会阻止您/将您推到错误页面,该页面可能无效。

虽然您可以正如其他海报所建议的那样,请关闭验证,但我建议不要将其视为一种习惯。而且永远不要在生产环境中这样做。

我唯一打破此规则的时间是在本地计算机上进行自签名证书。

它看起来像是一个SSL问题,是修复网络环境的SSL的最佳方法。


现在,您可以通过将拒绝为false

绕过问题
const request = require("request");
const https = require('https');
const agentOptions = {
    host: 'en.m.wikipedia.org',
    port: '443',
    path: '/wiki/Astrid_Olofsdotter_of_Sweden',
    rejectUnauthorized: false
};
const agent = new https.Agent(agentOptions);
const postOption = {
    method: 'GET',
    agent: agent,
    uri: 'https://en.m.wikipedia.org/wiki/Astrid_Olofsdotter_of_Sweden'
};
request(postOption, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body);
  }
});

您可以使用以下命令绕过https:

npm config set strict-ssl false

设置strict-ssl false允许所有节点服务器访问任何URL。

或从HTTPS或HTTP设置注册表URL如下:

npm config set registry="http://registry.npmjs.org/"

注意:但是,我个人认为绕过https并不是真正的解决方案,但是我们可以将其用作解决方法。

希望这会有所帮助。

这里的一个非常紧密的答案。

非常详细的&此处给出了此问题的具体答案。

我会推荐以下内容:

在致电https.request()设置之前:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

在代理选项中,设置:

const agentOptions = {    
    ... 
    rejectUnauthorized: false
};

另外,请参阅请求库的TLS/SSL的文档。

最新更新