本地获取 API 时出现自签名证书错误

Posted

技术标签:

【中文标题】本地获取 API 时出现自签名证书错误【英文标题】:Self signed certificate error when fetching API locally 【发布时间】:2021-11-13 03:08:39 【问题描述】:

我有一个简单的.NET Core WebAPI,没有身份验证。我使用默认策略添加了 Cors。我从我的 React 网站或 Postman 连接和获取数据没有问题(一切都在我的机器上本地运行)。现在我试图在超级简单的node 应用程序中从该 API 获取数据,但我收到了这个错误:

file:///Users/aw/Projects/TestNodeApp/node_modules/node-fetch/src/index.js:94
            reject(new FetchError(`request to $request.url failed, reason: $error.message`, 'system', error));
                   ^

FetchError: request to https://localhost:5001/api/teams failed, reason: self signed certificate
    at ClientRequest.<anonymous> (file:///Users/aw/Projects/TestNodeApp/node_modules/node-fetch/src/index.js:94:11)
    at ClientRequest.emit (node:events:394:28)
    at TLSSocket.socketErrorListener (node:_http_client:447:9)
    at TLSSocket.emit (node:events:394:28)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) 
  type: 'system',
  errno: 'DEPTH_ZERO_SELF_SIGNED_CERT',
  code: 'DEPTH_ZERO_SELF_SIGNED_CERT',
  erroredSysCall: undefined

这是我的整个node 申请:

import fetch from 'node-fetch';

async function fetchTeams() 
  const response = await fetch('https://localhost:5001/api/teams',  method: 'GET' );
  const data = await response.json();
  return data;


(async () => 
  console.log('Process started');
  const teams = await fetchTeams();
  console.log(teams);
)().finally(() => 
  console.log('Process finished');
);

这是什么意思?我错过了什么?

顺便说一句。当我获取 Github API 时,它工作正常,如下所示:

async function fetchGithub() 
  const response = await fetch('https://api.github.com/users/Microsoft');
  const data = await response.json();
  return data;

所以我认为,API 中缺少一些东西。我的 React 网站不需要的东西,那个节点应用程序需要的东西。

感谢您的帮助!

【问题讨论】:

***.com/questions/10888610/… 【参考方案1】:

尝试使用 dotnet dev-certs 信任自签名证书

dotnet dev-certs https --trust

更多详情请访问this documentation page。

【讨论】:

以上是关于本地获取 API 时出现自签名证书错误的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 运行 sequelize db:migrate 时出现“自签名证书”错误

在 React 中通过 axios 调用 API(使用自签名证书)时出现 CORS 问题

Web Api 中的自签名证书始终为空

Openssl:错误“证书链中的自签名证书”

将 Key Vault 证书(自签名)部署到 Web 应用程序时出现“错误请求”错误或“NoRegisteredProviderFound”

在 android Nougat 中使用自签名证书通过 https 连接时出现 SSL 握手异常