npm/yarn安装时"unable to verify the first certificate"报错处理

问题

刚刚在安装electron遇到个问题,无论npm还是yarn都会报unable to verify the first certificate这个错误,翻译过来就是“无法验证第一个证书”(第一个证书是什么鬼,为啥是第一个)。

原因

提到证书,首先就会想到https协议,经过搜索相关问题,果然查到:2017年2月27日起,npm不再支持自签名证书。npm install走的是https协议,需要通过数字证书来保证的。

解决方案

网络上的解决方案有很多,我这里总结一下:

1. 取消ssl验证

1
2
3
4
5

// 取消`ssl`验证
npm config set strict-ssl false // npm
yarn config set strict-ssl false // yarn

设置完成后,我们可以通过以下命令来查看设置后的状态

1
2
3
4
5

// 取消`ssl`验证
npm config get strict-ssl // false
yarn config get strict-ssl // false

确认没问题后,再进行安装操作,理论上就可以跳过ssl验证了。

2. 设置一个空证书

1
2
3
4
5
6
7
8

# npm
npm install npm -g --ca=""
npm config set ca=""

npm install npm -g --ca=""
npm config set ca=""

一般情况,上面两种方案就已经可以搞定了。

3. 取消ssl验证

如果以上方案还是没能解决问题,那一定就是因为开了代理工具了,比如FastGitHub

https是一种安全的协议,确保服务端与客户端之间传送正确性的。现在中间多了一个代理转发,有一些连接会觉得这样不靠谱,不允许连接。

为了绕过这个验证,可以通过修改npm源来实现:

1
2
3
4
5
6
7
8

# electron可以单独设置下载源
set ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/

# npm可以直接设置全局下载源
npm config set registry http://registry.cnpmjs.org/
npm config set registry http://registry.npm.taobao.org/

我们也可以通过.npmrc来设置单独某一个项目的下载源

1
2
3
# registry=https://registry.npm.taobao.org
# sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/

当然,nrm这种下载源管理工具也是个不错的选择

1
2
3
4
5
6
7
8
9
10
11
12

# 首先全局安装nrm
npm i nrm -g
...

# 查看全部的有效下载源
nrm ls
...

# 使用某个源,例如taobao
nrm use taobao

本文永久链接: https://www.mulianju.com/unable-to-verify-the-first-certificate/