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

Docker中运行Puppeteer遇ERR_CERT_AUTHORITY_INVALID错误的解决方法

解决Docker中Puppeteer访问自定义SSL证书网站的证书验证问题

问题分析

你遇到的net:ERR_CERT_AUTHORITY_INVALID错误,本质是Chrome未识别到你安装的自定义CA证书。以下是针对性的解决步骤,无需禁用证书验证:


解决步骤

1. 更新系统证书缓存

将证书放入/usr/local/share/ca-certificates后,必须执行命令让系统生成新的证书缓存:

update-ca-certificates

执行成功后,会输出类似1 added, 0 removed; done的提示,确认新证书已被系统信任。

2. 检查证书格式

/usr/local/share/ca-certificates仅支持PEM格式的证书,且文件名必须以.crt结尾。如果你的证书是二进制DER格式,先转换为PEM:

openssl x509 -inform der -in your-cert.der -out your-cert.crt

转换完成后重新放入目标目录,再执行update-ca-certificates。

3. 配置Chrome强制使用系统证书

Docker环境中Chrome可能不会自动加载系统CA证书,启动Puppeteer时添加强制参数:

await puppeteer.launch({
  executablePath: '/usr/bin/google-chrome',
  args: [
    '--no-sandbox', // Docker运行Chrome的必要参数,规避权限限制
    '--use-system-ssl-certificates' // 强制Chrome读取系统信任的CA证书
  ]
});

4. 验证系统证书配置

进入容器,先通过curl确认系统层面已信任目标证书:

curl https://my-page-url

如果curl能正常访问,说明系统证书配置正确,问题仅出在Chrome端;若curl也报错,回到步骤1和2检查证书安装流程。

5. 清除Chrome缓存(可选)

如果Chrome留存了旧的证书缓存,可指定新的用户数据目录规避:

await puppeteer.launch({
  executablePath: '/usr/bin/google-chrome',
  args: [
    '--no-sandbox',
    '--use-system-ssl-certificates',
    '--user-data-dir=/tmp/new-chrome-profile' // 全新用户目录,无缓存干扰
  ]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:49:58