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

如何修复Debian 8 Docker内与Let's Encrypt DST根证书相关的CERT_HAS_EXPIRED错误

失效原因

Debian 8(Jessie)已于2020年停止长期支持,内置CA证书库长期未更新,缺失Let's Encrypt当前使用的ISRG Root X1根证书。同时Node v8.x默认使用内置的根证书列表,不会读取系统层面的CA证书配置,因此仅修改系统CA配置对Node发起的HTTPS请求无效。

临时修复方案(无需更换基础镜像)

按如下顺序修改Dockerfile:

  1. 替换Debian Jessie的apt源为归档源,确保可以正常安装依赖:
RUN sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list \
    && sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list \
    && apt-get update \
    && apt-get install -y ca-certificates curl
  1. 下载ISRG Root X1根证书并更新系统CA库:
# 注释过期的DST_ROOT_CA_X3证书(原有操作保留)
RUN sed -i 's#mozilla\/DST_Root_CA_X3.crt#!mozilla\/DST_Root_CA_X3.crt#g' /etc/ca-certificates.conf
# 下载ISRG Root X1根证书
RUN curl -fsSL https://letsencrypt.org/certs/isrgrootx1.pem -o /usr/local/share/ca-certificates/isrgrootx1.crt
# 刷新系统CA证书
RUN update-ca-certificates --fresh
  1. 配置Node使用系统CA证书,二选一即可:
  • 启动应用时添加启动参数:node --use-openssl-ca 你的应用入口文件路径
  • 在Dockerfile中添加全局环境变量:
ENV NODE_OPTIONS="--use-openssl-ca"

如果上述配置依然无效,可以额外添加证书路径环境变量:

ENV NODE_EXTRA_CA_CERTS="/usr/local/share/ca-certificates/isrgrootx1.crt"

长期修复方案

Debian 8、Node v8、Meteor 8均已停止官方维护,存在大量未修复的安全漏洞,证书类问题还会反复出现,建议直接更换基础镜像:

  • 优先选择基于Debian 11/12、Ubuntu 20.04+的官方Node LTS版本镜像
  • 同步升级Meteor到仍在支持的版本,彻底解决依赖过时问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:18:02