运行npx playwright install出现证书链自签名证书错误
错误产生原因
报错里的self signed certificate in certificate chain是典型的TLS证书校验失败问题,触发逻辑是执行安装命令时,Node.js进程需要从Playwright的资源服务器下载对应版本的Chromium浏览器包,但当前网络链路中的HTTPS证书链存在未被Node.js信任的自签名证书,常见触发场景:
- 终端走了公司内网网关、代理服务,这类服务会替换HTTPS响应的证书,所用的根证书是企业自签的,不在Node.js内置的可信根证书列表中
- 本地运行了抓包工具(Charles、Fiddler、Whistle等),这类工具为了解析HTTPS流量会生成自签名证书,同样不被Node.js默认信任
- 系统安装了自定义自签名根证书,但Node.js默认不会读取系统级的证书信任存储,仅使用自身内置的根证书列表,导致校验不通过
修复方案
按照操作成本和安全性从高到低,可选择以下方案:
方案1:将自签名根证书加入Node.js信任列表(推荐,无安全风险)
适合长期在固定网络环境(比如公司内网)开发的场景:
- 获取当前网络环境的自签名根证书文件(.crt 格式),可从公司IT部门获取,也可以直接从浏览器访问任意HTTPS网站后,从证书详情里导出根证书
- 在终端设置
NODE_EXTRA_CA_CERTS环境变量,值为根证书的本地绝对路径,再执行安装命令:- macOS / Linux 终端:
export NODE_EXTRA_CA_CERTS=/your/local/path/root-ca.crt npx playwright install- Windows CMD 终端:
set NODE_EXTRA_CA_CERTS=C:\your\local\path\root-ca.crt npx playwright install- Windows PowerShell 终端:
$env:NODE_EXTRA_CA_CERTS="C:\your\local\path\root-ca.crt" npx playwright install
如果需要长期生效,直接把这个环境变量加到系统环境变量列表即可,不用每次打开终端重复设置。
方案2:临时跳过TLS证书校验(仅适合可信本地环境,不推荐长期使用)
如果只是临时安装、暂时拿不到根证书,可以在执行安装命令前临时关闭Node.js的证书校验逻辑,注意安装完成后一定要恢复默认配置,避免后续运行Node.js脚本时遭遇中间人攻击:
- macOS / Linux 终端:
NODE_TLS_REJECT_UNAUTHORIZED=0 npx playwright install
- Windows CMD 终端:
set NODE_TLS_REJECT_UNAUTHORIZED=0 npx playwright install # 安装完成后执行下面的命令恢复默认配置 set NODE_TLS_REJECT_UNAUTHORIZED=1
- Windows PowerShell 终端:
$env:NODE_TLS_REJECT_UNAUTHORIZED=0 npx playwright install # 安装完成后执行下面的命令恢复默认配置 $env:NODE_TLS_REJECT_UNAUTHORIZED=1
方案3:手动放置浏览器包跳过在线下载
如果网络环境限制实在无法在线下载,可以手动获取对应版本的Chromium安装包,解压后放到Playwright的默认浏览器缓存目录即可,不需要执行在线安装命令:
Playwright默认浏览器缓存路径:
- Windows:
%USERPROFILE%\AppData\Local\ms-playwright- macOS:
~/Library/Caches/ms-playwright- Linux:
~/.cache/ms-playwright
注意放置的文件夹名要和报错里的版本对应,也就是chromium-1005,否则Playwright会识别不到已安装的浏览器。
内容的提问来源于stack exchange,提问作者Good Programmer
相关产品推荐
相关产品推荐

