没有ssl的npm安装

Ken*_*awa 56 ssl node.js npm

我有一个Ubuntu虚拟机无法连接到具有ssl的站点,即https.如果网址以http开头,它可以成功地从互联网上下载工件.

npm install将通过https下载依赖项.反正是否通过http下载?

col*_*inf 135

尝试使用该命令将注册表更改为http版本而不是默认的https

npm config set registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果要使用`-g`标志安装全局包,则需要使用额外的`sudo` (3认同)

Cre*_*ine 13

正如康林夫所说,以下应该有效:

npm config set registry http://registry.npmjs.org/

现在,为了补充我的话,您还应该考虑在没有ssl的情况下下载允许中间人攻击.只是向阅读帖子的人添加警告.

如果你是一个独立的开发者,http直接下载应该没有太大的麻烦,但如果我想使用node.js攻击一家公司,我会考虑通过npm提供恶意代码...并且在没有ssl的情况下执行这样的攻击会更容易.

  • @Mukus DNS通过设置本地流氓DNS多次遭到入侵,从而劫持目标服务器的"registry.npmjs.org".由于没有TLS,因此通过使用root权限进行证书签名,无法对npm服务器进行握手验证.在rouge DNS后面的rouge npm服务器可以提供它想要的任何代码,它在npm安装期间运行. (3认同)

phy*_*att 9

经过多次试验和错误,我发现除了上面说的所有内容之外,我还需要设置https-proxyhttp的值proxy.

所以结束.npmrc文件看起来像

proxy=http://username:password@proxy.address:port/
https-proxy=http://username:password@proxy.address:port/
strict-ssl=false
registry=http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

请注意,代理和https代理是完全相同的!

有关详细信息,请参阅此主题的评论:

https://github.com/npm/npm/issues/8034

另外我npm cache clean --force在更新npmrc后运行了一个很好的措施,但我不确定它是否是必需的.

希望有所帮助.

  • 将 http_proxy 值设置为 https_proxy 对我有用。谢谢。 (2认同)