npm/pnpm报错:证书过期 CERT_HAS_EXPIRED
1. 问题
在国内使用npm/pnpm大多配置的淘宝镜像https://registry.npm.taobao.org,比官网的速度更快。但是时间长不更新,使用npm/pnpm安装从淘宝的 npm 镜像源下载包时会遇到证书过期的问题。
2. 证书更新
更新 SSL 证书验证通常不是需要客户端直接处理的问题,根本上是由服务器端或者证书颁发机构负责的。然而,在客户端我们需要采取一些措施来确保 SSL 证书验证是最新的。
2.1 更新操作系统和浏览器
2.1.1 操作系统
确保你的操作系统是最新的。操作系统更新通常包含最新的根证书存储。
Windows: 通过 Windows Update 更新
macOS: 通过 App Store 或系统偏好设置更新
Linux: 使用包管理器更新(sudo apt upgrade)
2.1.2 浏览器
保持浏览器最新可以确保你有最新的证书验证机制。
- Chrome, Firefox, Safari, Edge 等都有自动更新功能,确保这个功能是开启的
2.2 更新 Node.js 和 npm Node.js
2.2.1 更新 Node.js
更新 Node.js可以获得最新的证书:
1 | npm install -g npm@latest |
2.2.2 更新证书存储
对于 Node.js,你可以尝试更新证书存储:
1 | npm install -g npm-certstore-update |
2.2.3 检查证书
使用 OpenSSL 检查证书 你可以使用 OpenSSL 命令行工具来检查证书的有效性:
1 | openssl s_client -connect registry.npmmirror.com:443 -servername registry.npmmirror.com |
3. 解决问题
3.1 更新镜像源:
如遇淘宝 npm 镜像更换地址,配置使用新的镜像地址:
1 | pnpm config set registry https://registry.npm.taobao.org/ |
3.2 重用官方 npm 源
如果网络条件允许可切换回官方的 npm 源:
1 | npm config set registry https://registry.npmjs.org |
3.3 清除 npm 缓存
部分情况是由于本地缓存引起,可尝试清除 npm 缓存:
1 | npm cache clean --force |
3.4 更新 npm
确保你使用的是最新版本的 npm:
1 | npm install -g npm@latest |
3.5 检查系统时间
确保你的系统时间是准确的,不正确的系统时间可能导致证书验证失败。
3.6 忽略 SSL 证书验证(终级办法,可能有安全问题)
如果上述方法都不起作用,你可以尝试禁用 npm 的 SSL 验证,配置忽略证书:
1 | npm config set strict-ssl false |
配置忽略 SSL 证书后再执行npm/pnpm安装恢复正常.
其他注意事项:
如果你在公司网络环境中,可能需要检查网络代理设置
某些防病毒软件可能会干扰 SSL 连接,尝试暂时禁用它们看是否能解决问题。
4 总结
SSL 证书验证是重要的安全机制,如果是证书过期更新证书即可,实在无法解决才会配置忽略证书。
参考文章:


