SSL 不安全旧版重新协商已禁用

Mat*_*gen 9 npm npm-install

我在代码方面发现了其他带有此错误的帖子,有些帖子提供了一些理论上应该适用于包管理器的解决方法,但似乎没有一个有效。

我以前曾让 NPM 工作过,但我不确定最近发生了什么变化破坏了它。

我正在尝试在这种情况下安装 better-sqlite3 。

请求https://registry.npmjs.org/better-sqlite3失败,原因:写入 EPROTO 7C720000:error:0A000152:SSL 例程:final_renegotiate:不安全的遗留重新协商已禁用:c:\ws\deps\openssl\openssl\ssl\状态\扩展.c:908:

看到这一点我最初的想法是禁用 strict-ssl,我知道这不是最好的选择,但这是我所知道的。这并没有解决问题。

我还尝试将我公司的随机根证书(因为我不知道该选择哪个,而且有 3 个)从 chrome 导出到一个文件夹中,然后添加 npm config set cafile path/to/file 但这并没有似乎有效

我还尝试过 NODE_OPTIONS=--tls-min-v1.0 和 NODE_OPTIONS=--use-openssl-ca

我知道我会得到很多不安全的不太好的选项,我宁愿选择安全的选项,但所提供的指示通常对我来说不清楚,也许是因为我对这些缺乏一些了解其他人拥有的实用程序。

我可以通过浏览器到达任何地方,有没有办法手动下载材料并将其缓存在 npm 的某个地方?这在某些情况下也很有帮助,但我不知道该怎么做。

最新错误(以及成功的错误)。这是在我使用 openssl 命令找到实际被撤回的证书,然后将其添加到 npm 配置(全局配置和用户配置)之后。

npm http fetch GET 200 https://registry.npmjs.org/rc 70373ms (cache stale)
npm verb type system
npm verb stack FetchError: request to https://registry.npmjs.org/minimist failed, reason: write EPROTO 08840000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:c:\ws\deps\openssl\openssl\ssl\statem\extensions.c:908:
npm verb stack
npm verb stack     at ClientRequest.<anonymous> (C:\Program Files\nvm\v19.0.0\node_modules\npm\node_modules\minipass-fetch\lib\index.js:130:14)
npm verb stack     at ClientRequest.emit (node:events:513:28)
npm verb stack     at TLSSocket.socketErrorListener (node:_http_client:488:9)
npm verb stack     at TLSSocket.emit (node:events:525:35)
npm verb stack     at emitErrorNT (node:internal/streams/destroy:151:8)
npm verb stack     at emitErrorCloseNT (node:internal/streams/destroy:116:3)
npm verb stack     at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
npm verb cwd c:\BitBucket\test
npm verb Windows_NT 10.0.19044
npm verb node v19.0.0
npm verb npm  v9.1.1
npm ERR! code EPROTO
npm ERR! syscall write
npm ERR! errno EPROTO
npm ERR! request to https://registry.npmjs.org/minimist failed, reason: write EPROTO 08840000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:c:\ws\deps\openssl\openssl\ssl\statem\extensions.c:908:
npm ERR!
Run Code Online (Sandbox Code Playgroud)

在花了我整个晚上直到凌晨 1 点之后,我能够通过清除 npm 的所有设置然后重新设置每个设置来让 npm 本身工作,strict-ssl false 现在又回来了,证书也设置好了,但由于并不是所有东西都能正常工作,所以我无论如何都必须执行 strict-ssl false :/

我必须重新添加我的代理设置,尽管我认为理论上不需要它,因为我可以在没有设置的情况下获取一些东西,但显然不是所有东西。

现在,我遇到的唯一问题是node-gyp。其他一切都可以使用当前配置、curl、npm 拉取包,我什至添加了纱线并使其正常工作,但 node-gyp 始终会出现这个愚蠢的错误

npm ERR! gyp ERR! stack FetchError: request to https://nodejs.org/download/release/v19.0.0/node-v19.0.0-headers.tar.gz failed, reason: unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)

太令人气愤了。

Mat*_*gen 1

我的公司内部有一个内部存储库/镜像设置,因此不幸的是,这里的答案不适用于其他人,但我所要做的就是保留我的 strict-ssl false 设置类型并设置他们的存储库。