You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Let's Encrypt根证书过期导致Azure Function Node应用API调用失败咨询

故障原因及解决方案

核心故障原因

Node.js 默认使用内置的独立根证书集做TLS校验,不依赖操作系统的证书存储,这也是你删除Windows证书存储里的过期证书没有生效的原因。
2021年Let's Encrypt的DST Root CA X3根证书过期后,老版本Node.js的内置根证书列表仍保留了该过期根证书,同时Let's Encrypt当时为了兼容旧设备,默认给R3中间签的证书附带了交叉链接到DST过期根的证书链,Node校验时会优先匹配到该过期根,直接抛出证书过期错误。

针对你提出的三个问题的答复

  • 是Node.js版本的问题:Node.js确实内置独立于操作系统的根证书集,若你使用的Node.js版本低于v12.22.0、v14.17.0、v16.0.0,内置根证书列表未移除过期的DST Root CA X3,就会触发该报错。本地和Azure Function运行环境都出现相同报错,首先要核对两处的Node.js运行时版本是否属于未修复的旧版本。
  • 不是Azure侧的默认配置问题:Azure Function的Node运行时版本由你自行选择,只要所选的Node版本内置的根证书集未更新,哪怕宿主系统的证书已经更新,Node仍会用自己内置的旧根证书做校验,触发报错。
  • 你需要自行做适配处理,可根据实际场景选择以下方案:
    1. 优先升级Node.js运行时版本:只要升到v12.22.0+、v14.17.0+、v16.0.0+及以上的任意版本,这些版本已经从内置根证书列表中移除了过期的DST Root CA X3,默认会匹配Let's Encrypt的有效根ISRG Root X1完成校验,直接解决问题。
    2. 若暂时无法升级Node版本,可添加Node进程环境变量:设置NODE_OPTIONS=--use-openssl-ca,强制Node放弃内置根证书,改用操作系统的根证书存储校验,只要运行环境的系统根证书已更新到包含有效ISRG Root X1,即可正常校验。
    3. 也可在请求逻辑中手动指定信任根证书:给Issuer.discover方法传入配置参数,在httpOptions中添加ca字段,值为ISRG Root X1的证书内容,强制请求时信任该有效根。

你上报的报错信息和触发逻辑完全匹配该场景:openid-client的discover方法底层默认走Node.js原生TLS校验逻辑,拉取OIDC配置的HTTPS请求在校验证书阶段命中过期根,直接抛出certificate has expired错误。

内容的提问来源于stack exchange,提问作者Andrew Shepherd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:54:03