1. 问题

​ 在国内使用npm/pnpm大多配置的淘宝镜像https://registry.npm.taobao.org,比官网的速度更快。但是时间长不更新,使用npm/pnpm安装从淘宝的 npm 镜像源下载包时会遇到证书过期的问题。

img

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
2
npm install -g npm-certstore-update
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
2
3
4
5
npm config set strict-ssl false
cnpm config set strict-ssl false
--确认配置信息
npm config get
cnpm config get

配置忽略 SSL 证书后再执行npm/pnpm安装恢复正常.

其他注意事项:
如果你在公司网络环境中,可能需要检查网络代理设置
某些防病毒软件可能会干扰 SSL 连接,尝试暂时禁用它们看是否能解决问题。

4 总结

SSL 证书验证是重要的安全机制,如果是证书过期更新证书即可,实在无法解决才会配置忽略证书。

参考文章:

  1. npm 安装“CERT_HAS_EXPIRED request to https://registry.npm.taobao.org/xxx failed“解决_npm install request to has expired-CSDN博客

  2. 解决执行npm(或pnpm)时报:证书过期 certificate has expired问题_reason: certificate has expired-CSDN博客