在Windows上运行Npm时如何解决SSL证书错误?

问题描述 投票:76回答:7

[当我尝试使用npm安装软件包时,它不起作用。漫长的等待后,我最终收到一条错误消息“无法建立隧道套接字,sutatusCode = 403”。

$ npm install coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm ERR! Error: tunneling socket could not be established, sutatusCode=403
npm ERR!     at ClientRequest.onConnect (c:\Program Files\nodejs\node_modules\npm\node_modules\request\tunnel.js:148:19)
npm ERR!     at ClientRequest.g (events.js:193:14)
npm ERR!     at ClientRequest.EventEmitter.emit (events.js:123:20)
npm ERR!     at Socket.socketOnData (http.js:1393:11)
npm ERR!     at TCP.onread (net.js:403:27)

但是,当我在网络浏览器(Google Chrome)中浏览到相同的URL时,它加载正常(请参阅脚注)。 https://registry.npmjs.org/coffee-script

怎么了?


虽然我碰巧使用了https代理,但我确信这不是问题。我已经配置了环境变量https_proxy(每npm user guide)。我知道环境变量是正确的,因为Python包管理器pip正确地遵循了它。

我相信问题与SSL证书有关,因为如果我使用wget下载该URL,则会收到有关证书的显式错误

$ wget https://registry.npmjs.org/coffee-script
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = c:/progra~1/wget/etc/wgetrc
--2012-12-17 12:14:07--  https://registry.npmjs.org/coffee-script
Resolving corpproxy... 10.254.215.35
Connecting to corpproxy|10.254.215.35|:8080... connected.
ERROR: cannot verify registry.npmjs.org's certificate, issued by `/C=US/ST=CA/L=Oakland/O=npm/OU=npm Certificate Authority/CN=npmCA/[email protected]':
  Unable to locally verify the issuer's authority.
To connect to registry.npmjs.org insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.

我该如何解决?在不影响安全性的前提下。


我也曾经在Web浏览器中获得SSL证书错误,直到我在控制面板的Internet选项中将'npmCA'证书安装为'受信任的根证书颁发机构'(屏幕截图”在此处输入图像说明“


编辑:我根据https://npmjs.org/doc/config.html#strict-ssl尝试了不安全解决方法>

npm set strict-ssl false

但仍然超时并出现相同的错误

$ npm install coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm ERR! Error: tunneling socket could not be established, sutatusCode=403

[当我尝试使用npm安装软件包时,它不起作用。漫长的等待后,我最终收到一条错误消息“无法建立隧道套接字,sutatusCode = 403”。 $ npm install coffee-script npm ...

npm
7个回答
123
投票

TL; DR


40
投票

此问题已通过使用版本库的http版本为我解决:


6
投票

我遇到相同的问题,我克服了使用


6
投票

前几天我碰巧遇到了类似的SSL问题。问题是您的npm没有为node-doc使用的证书设置根证书。


5
投票
DigiCert High Assurance EV Root CA

3
投票

我有同样的问题。经过一番挖掘后,我意识到许多后/预安装脚本会尝试安装各种依赖项,有时还会使用特定的存储库。更好的方法是为对我有用的nodejs禁用https模块的证书检查。


0
投票

问题出在您的代理上。因为您的安装软件包的位置提供者会创建自己的证书,并且不会从接受的授权机构购买已验证的证书,所以您的代理不允许访问目标主机。我认为您在使用Chrome浏览器时会绕过代理。因此没有检查。

© www.soinside.com 2019 - 2024. All rights reserved.