Ubuntu 18.04安装Socket及npm install -g n时遇SSL证书错误求助
解决Ubuntu 18.04中npm安装包时出现的SSL Error: CERT_UNTRUSTED问题
我之前处理过不少类似的老版本Node/npm的SSL问题,你碰到的这个情况其实很典型——你的Node(v0.8.15)和npm(1.1.66)版本实在太老旧了,它们自带的根证书库已经不被现代npm registry的SSL证书信任,而且对新的TLS协议支持也不足,所以才会反复出现SSL Error: CERT_UNTRUSTED错误。下面给你两种解决方案,优先推荐彻底升级的方法:
方法一:临时关闭SSL验证救急(不推荐长期使用)
如果只是想快速完成安装,可以临时关闭npm的SSL严格验证:
sudo npm config set strict-ssl false
之后再执行你需要的安装命令:
# 安装n工具 sudo npm install -g n # 安装socket.io npm install socket.io
⚠️ 注意:这个方法会降低npm的安全性,安装完成后记得恢复SSL验证:
sudo npm config set strict-ssl true
方法二:升级Node和npm到支持现代SSL的版本(推荐)
这是最根本的解决办法,因为旧版本的Node/npm已经完全停止维护,不仅有SSL问题,还会有很多其他兼容性和安全隐患。
用n工具升级(你本来想安装的工具)
- 先临时关闭SSL验证(否则无法安装n):
sudo npm config set strict-ssl false
- 安装n工具:
sudo npm install -g n
- 升级到最新的长期支持(LTS)版本Node:
sudo n lts
- 重启终端,验证新版本是否生效:
node -v npm -v
- 恢复SSL验证:
sudo npm config set strict-ssl true
- 现在再安装socket.io就不会有问题了:
npm install socket.io
用nvm(Node版本管理器)升级(更灵活的方案)
如果n工具安装有问题,可以试试nvm,它能更方便地管理多个Node版本:
- 安装nvm(如果curl报SSL错误,加上
--insecure参数跳过证书验证):
curl --insecure -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
- 重启终端,加载nvm环境:
source ~/.bashrc
- 安装最新的LTS版本Node:
nvm install --lts
- 设置该版本为默认使用的Node版本:
nvm use --lts
- 验证版本后,直接安装socket.io即可:
npm install socket.io
内容的提问来源于stack exchange,提问作者IMRAN AFREED
相关产品推荐
相关产品推荐

