【问题标题】:Node.js Fetch says Certificate ExpiredNode.js Fetch 说证书过期
【发布时间】:2021-11-26 00:34:31
【问题描述】:

我正在使用 Node.js 和 node-fetch 来检索 JSON。这段代码已经工作一年多了,好久没碰代码了,最近不工作了。

这是我的获取代码:

let response = await fetch('https://[mydomain]/api.php', {method: 'POST', headers: headers, body: body});
const data = await response.json();

我没有包含 body 和 header 对象,但它们是在我的 fetch 上方几行定义的。就像我提到的,这一切都在几天前才起作用。

这是我收到的错误:

rejected promise not handled within 1 second: FetchError: request to https://[mydomain]/api.php?reset failed, reason: certificate has expired
/Applications/Visual Studio Code.app/Contents/Resources/app/out/bootstrap-fork.js:5
stack trace: FetchError: request to https://[mydomain]/api.php?reset failed, reason: certificate has expired

该域具有有效的证书。我已经手动检查了它并使用了一些不同的工具来检查它。我正在使用 Open SSL,我更新了 SSL 以防万一。

Node.js 在 VS Code 扩展中运行,但我认为这无关。

知道为什么 Node.js 认为 SSL 已过期吗?或者有没有办法让我忽略这个警告?该扩展主要供我个人使用,API 位于我自己的个人服务器上。

【问题讨论】:

  • 您是如何检查服务器上的证书的?这可能只是一个巧合,但昨天是 Let's Encrypt 提供的无数免费证书的到期日期(您需要获得新证书)。我建议再次检查服务器证书是否过期。
  • 我只是使用了一些不同的 SSL 检查器,比如这个:sslshopper.com/ssl-checker.html
  • 好吧,既然您没有说您的实际域是什么,我们无法帮助您诊断问题。似乎很明显,“某事”在某处已过期。我不会寻找解决警告的方法。你真的应该理解它为什么说它所说的并解决问题。要检查的一件事是您的服务器和客户端上的时钟,以确保没有日期偏离。
  • 您使用的是什么节点和节点获取版本?我们在几天前弹出的一个应用程序中遇到了类似的问题。我们使用的是旧的节点版本并更新到更新的版本解决了它。

标签: node.js json ssl openssl fetch


【解决方案1】:

尝试将process.env.NODE_TLS_REJECT_UNAUTHORIZED='0' 添加到您正在初始化请求的文件中。

【讨论】:

  • 我添加了这个,我收到很多关于使“HTTPS 请求不安全”的警告,但它现在又可以工作了!谢谢!
  • 实际上不要在生产中使用它。请参阅这个相当老的 SO 问题:stackoverflow.com/questions/20433287/… 忽略已接受的答案并阅读用户coolaj86 投票最多的答案。
猜你喜欢
  • 1970-01-01
  • 2021-11-29
  • 2014-09-22
  • 2021-11-23
  • 2021-11-22
  • 1970-01-01
  • 2018-09-27
  • 2014-10-14
  • 2021-05-08
相关资源
最近更新 更多