你可以将 npm 指向cafile https://docs.npmjs.com/using-npm/config#cafile
npm config set cafile /path/to/cert.pem
您还可以配置ca https://docs.npmjs.com/using-npm/config#ca直接字符串。
npm config set ca "cert string"
ca https://docs.npmjs.com/using-npm/config#ca也可以是证书字符串数组。在你的.npmrc
:
ca[]="cert 1 base64 string"
ca[]="cert 2 base64 string"
The npm config
上面的命令会将相关的配置项保存到您的~/.npmrc
file:
cafile=/path/to/cert.pem
Note:这些 CA 设置将覆盖 npm 使用的默认“现实世界”证书颁发机构查找。如果您尝试通过 https 使用任何未经 CA 证书签名的公共 npm 注册表,您将收到错误。
因此,如果您需要支持公共 https npm 注册表以及您自己的注册表,您可以使用curl 基于 Mozilla 的 CA 捆绑包 https://curl.haxx.se/docs/caextract.html并将您的 CA 证书附加到cacert.pem
file:
curl -o ~/.npm.certs.pem https://curl.se/ca/cacert.pem
cat my-ca-cert.pem >> ~/.npm.certs.pem
npm config set cafile ~/.npm.certs.pem
不幸的是,npm 的 CA 包不可编辑,因为它在源代码 https://github.com/nodejs/node/blob/master/src/node_root_certs.h(谢谢tomekwi https://stackoverflow.com/users/2816199/tomekwi) but nitzel 提供了一个通用的 Node.js 方法 https://stackoverflow.com/a/56239954/1318694通过附加证书NODE_EXTRA_CA_CERTS
环境变量。
RHEL 注意:如果您碰巧使用基于 RHEL 的发行版和 RHEL 打包的 nodejs/npm,您可以使用标准update-ca-trust method https://stackoverflow.com/a/45000022/1318694因为 RedHat 将其软件包指向系统 CA。