Deno 的 fetch API 出现 "SSL certificate problem: certificate has expired" 解决方法

阅读时长 3 分钟读完

问题描述

在使用 Deno 的 fetch API 进行网络请求时,有时会遇到类似以下的错误:

这是因为 HTTPS 站点所使用的 SSL 证书过期了。但这不是一个特定于 Deno 的问题。可以在其他 JavaScript 环境中(例如 Node.js 中)遇到相同的错误。

解决方法

要解决此问题,可以禁止 SSL 校验,或者更新或替换 SSL 证书。

禁用 SSL 校验

禁用 SSL 校验的方法相对简单,但不太安全,因为它使应用程序容易受到中间人攻击。建议只在开发环境中使用此选项,并在生产环境中更新证书。

更新或替换 SSL 证书

更新或替换 SSL 证书需要找到证书的颁发机构并获得新的证书。有两种方法可以获得证书:

  1. 如果使用的是自签名证书,则可以创建新的自签名证书并将其部署到服务器。
  2. 如果使用的是由可信的颁发机构颁发的证书,则可以向颁发机构请求新证书。

在更新证书后,应更新配置以使用新证书。

以下是使用 Node.js 的示例代码:

-- -------------------- ---- -------
----- ----- - -----------------
----- -- - --------------

-----------
  --------- --------------
  ----- ----
  ------------------- ----- -- ------
  --- ----------------------------------------------- -- -----
-- --- -- -
  --- ---- - ---

  -------------- - -- -
    ---- -- --
  ---

  ------------- -- -- -
    ------------------
  ---
---

总结

尽管 Deno 与其他 JavaScript 环境不同,但解决 SSL 证书问题的方法与其他环境相同。禁用 SSL 校验虽然简单,但不安全。建议使用安全的方法更新或替换证书。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64aedc5d48841e9894b0a77c

纠错
反馈