Yarn: 错误无法获得本地颁发者证书

创建于 2016-10-12  ·  42评论  ·  资料来源: yarnpkg/yarn

你好

您是要请求一个 _feature_ 还是报告一个 _bug_?
Bug

如果当前行为是错误,请提供重现步骤。

λ yarn config set strict-ssl false
yarn config v0.15.1
success Set "strict-ssl" to "false".
Done in 0.06s.

yarn install

error unable to get local issuer certificate
    at Error (native)
    at TLSSocket.<anonymous> (_tls_wrap.js:1060:38)
    at emitNone (events.js:86:13)
    at TLSSocket.emit (events.js:185:7)
    at TLSSocket._finishInit (_tls_wrap.js:584:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:416:38)
info Visit http://yarnpkg.com/en/docs/cli/install for documentation about this command.

什么是预期行为?
我想安装我的依赖项。
我错过了什么(也许)?
谢谢

请提及您的 node.js、yarn 和操作系统版本。

NodeJS:V6.7
纱线:v0.15.1
操作系统:Windows 7

最有用的评论

我在同样的情况下遇到了同样的问题,但我运行了这个命令yarn config set strict-ssl false并且它起作用了。

所有42条评论

我有同样的问题,因为我们支持添加自签名 ssl 的代理。

启用strict-ssl但在.npmrc中手动指定 CA 时会发生同样的问题。 Yarn 似乎忽略了所有 SSL 配置(或者需要一个不同的配置,但我在配置中找不到它)

ca[]="-----BEGIN CERTIFICATE-----\n..."

在工作中遇到同样的问题!

有同样的问题,(我正在使用自我证书。)

同样的问题,还将注册表设置为非 ssl 变体或原始非 ssl registry.npmjs.org 也无济于事。

在公司代理的背后,也遇到了这个问题。

我在公司代理背后有同样的错误:)。 等不及要修复了:)

我有同样的问题,网络在代理后面,将strict-ssl设置为false,并将注册表配置为非ssl,仍然无法正常工作。 最好尽快修复它。 等不及了

我相信@TAGraves正在#1025 中解决这个问题。 我真的很想看到它着陆! 👍

PR #736 将添加对 cafile 的支持,这是解决此问题的另一种方法,并且与禁用 strict-ssl 不同,您不会容易受到 MITM 攻击。

我们已经合并了对cafilestrict-ssl所以这个问题应该得到解决。

我的纱线 v0.21.3 仍然存在这个问题

更新:也在每晚构建 0.22.0-20170303.1013

我发现如果我将 .npmrc 中的 strict-ssl 和其他配置复制到 .yarnrc 中,那么事情就会开始工作(或使用yarn config set添加每个部分)。 我不知道为什么它没有从 .npmrc 中提取它。

我在同样的情况下遇到了同样的问题,但我运行了这个命令yarn config set strict-ssl false并且它起作用了。

是的,这也对我有用。

@sylvesteraswin也做了同样的事情,它奏效了,谢谢 👍

全部在 0.23.1 中被破坏,将注册表设置为 http 并将 strict-ssl 设置为 false 工作但现在没有。 我也遇到证书被拦截的问题,这就是我需要 http 的原因。

我试过yarn config set strict-ssl false ,但现在收到“404 Not Found”。 Mac Sierra,节点 8.1.2,纱线 0.27.5。

@JesterXL它对我

yarn config set strict-ssl false为我工作!

npm 配置集严格的 ssl

为我工作

只是确保人们不要在这里盲目复制粘贴代码:不要禁用严格的 SSL 检查。

好的,现在我引起了你的注意,如果你_知道_你在做什么以及你正在承担什么风险,你可能会。 否则,只是不要。

是否有一种解决方案不涉及使用 HTTP 的危险? 我真的很想能够解决这个问题,而不必禁用严格的 SSL。

好吧,使用 STRICT SSL 会很棒,但问题是换出证书的公司,他们实际上很难不使用 http,只是为了监视我们的流量以确保我们没有做坏事。 基本上,他们比他们的员工更信任公众。 但是,还有一种替代方法,您需要获取公司正在交换的证书的副本,并将 cafile 设置为证书的路径。 这并不像它应该的那样简单,但它确实有效并且是安全的。 如果它不适合你,那么你需要升级你的纱线版本......

@damiandennis我的公司刚刚实施了一个新证书,所以我在我的电脑上注册了它,除了纱线以外的几乎所有东西都很好。 我在 1.1.0

@snood1205同样的情况。 除了yarnpip之外,其他一切都正常

我认为这是由于我们依赖的request库是如何构建的:

strictSSL - 如果为 true,则要求 SSL 证书有效。 注意:要使用您自己的证书颁发机构,您需要指定使用该 CA 创建的代理作为选项。

因此,您应该能够通过在.yarnrc设置以下配置值来明确地将公司证书列入白名单:

  • 咖啡厅
  • 证书
  • 钥匙

@BYK这是一个简单的问题,请原谅。

设置这些值的格式是什么? ca=~/Code/certs/mycert.crt ?

另外, .yarnrc顶部有一个很大的免责声明,告诉我不要修改它。 无论如何,我是否有权更改它? 😀

@ao享受您的非确定性下载!

yarn config set strict-ssl false为我工作。 谢谢@sylvesteraswin

以下命令对我有用:
纱线配置设置strict-ssl false

@vrajpoot太好了! 但请不要在此处发布它,因为它可能会诱使其他粗心的人也关闭基本安全功能并可能在他们的计算机上下载恶意软件。

喜欢恶意软件并故意用它感染您的计算机完全没问题....但它应该作为研究主题或爱好而不是人们会在他们的工作机器上做的实际事情。

@brandonsturgeon提出了应该解决的非常有效的观点,yarn 的维护者应该做出回应。 他不是唯一一个想知道的人。

https://github.com/yarnpkg/yarn/issues/6578

有趣的是,每个人都说“不要禁用strict-ssl”。
但从来没有人成功过。

yarn config set strict-ssl false 对我有用。 谢谢

当我尝试安装 jquery 包时出现此错误。 经过大量的重新搜索,终于发现既不应将strict-sslfalse也不应编辑.yarnrc文件。 清洁和理想的方法是 -
$ yarn config set cafile "/physical/path/to/certificate-file.pem"就是这样。 触发此命令后,我无需关闭 SSL 即可成功安装 jquery。

可以在上面命令yarn config list之前和之后使用 yarn 检查配置,并确保我们上面所做的更改是否发生,通常是这样。 :)

@sandipt27很抱歉,您花了这么长时间才找到正确的方法。 您没有找到它们可能是因为:

  1. yarnrc文档根本没有提到这个秘密配置参数。 “未记录的功能是实验性的”的约定似乎不适用于 Yarn。
  2. 甚至NPM 文档也太简短
  3. 实际上cafile在这个问题中已经被多次提及,但更多的人只是简单地发送垃圾邮件“嘿,禁用 SSL 对我有用”而没有考虑安全性,因为他们希望他们的工作能快速完成。 谁还需要 SSL?

您可能无法修复 3,而 2 在另一个范围内,但也许有人可以出来修复 1。关于密码学的知识),虽然我无法批准它,因为我不是维护者。

https://github.com/yarnpkg/yarn/issues/841#issuecomment -559037850
它对我不起作用。

我使用本地发行人证书设置了一个私有存储库(Verdaccio)
并使用链式证书文件进行了相同的设置。
但是 Yarn 无法下载软件包。

它在 NPM 中运行没有任何问题。

@sandipt27很抱歉,您花了这么长时间才找到正确的方法。 您没有找到它们可能是因为:

  1. yarnrc文档根本没有提到这个秘密配置参数。 “未记录的功能是实验性的”的约定似乎不适用于 Yarn。
  2. 甚至NPM 文档也太简短
  3. 实际上cafile在这个问题中已经被多次提及,但更多的人只是简单地发送垃圾邮件“嘿,禁用 SSL 对我有用”而没有考虑安全性,因为他们希望他们的工作能快速完成。 谁还需要 SSL?

您可能无法修复 3,而 2 在另一个范围内,但也许有人可以出来修复 1。关于密码学的知识),虽然我无法批准它,因为我不是维护者。

一旦我转向 Pull Request 修复它,肯定会让你知道你需要的帮助。 :)

我看到同样的事情坐在 Nexus 代理组后面。 此时 CA 文件设置已通过 NPM 和 Yarn 设置,但我仍然收到错误消息。

➜ yarn config list
yarn config v1.21.1
info yarn config
{
  'version-tag-prefix': 'v',
  'version-git-tag': true,
  'version-commit-hooks': true,
  'version-git-sign': false,
  'version-git-message': 'v%s',
  'init-version': '1.0.0',
  'init-license': 'MIT',
  'save-prefix': '^',
  'bin-links': true,
  'ignore-scripts': false,
  'ignore-optional': false,
  registry: 'https://registry.yarnpkg.com',
  'strict-ssl': true,
  'user-agent': 'yarn/1.21.1 npm/? node/v12.14.1 darwin x64',
  cafile: '/Users/XXXXXXX/pml_root_ca.pem',
  email: 'XXXXXXXXXXXXXXX',
  username: 'XXXXXXX'
}
info npm config
{
  '//registry.npmjs.org/:_authToken': XXXXXXXXXXXXXXXXXXXXX',
  cafile: '/Users/XXXXXXX/pml_root_ca.pem',
  registry: 'https://XXXXXXXXXXXXXXXXX/repository/npmjs/',
  '//nexus.pennmutual.com/repository/pml-npmjs/:_authToken': 'XXXXXXXXXXXXXXXXX',
  python: '/usr/bin/python'
}
✨  Done in 0.04s.

cdir-ui on  feature/build_api is 📦 v0.1.0 via ⬢ v12.14.1 
➜ yarn install
yarn install v1.21.1
[1/5] 🔍  Validating package.json...
[2/5] 🔍  Resolving packages...
[3/5] 🚚  Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz: unable to get local issuer certificate".
info If you think this is a bug, please open a bug report with the information provided in "/Users/XXXXXXX/Projects/cdir-ui/yarn-error.log
cdir-ui on  feature/build_api is 📦 v0.1.0 via ⬢ v12.14.1 

IIUC,一旦你以任何方式设置了cacafile ,yarn 就会为 Node 提供一个 TLS 配置,_replaceing_ 任何信任节点都会自行设置。
相反,为了能够同时使用系统的 CA 信任存储 (#6578) 和额外的 CA,请确保yarn config list显示没有ca / cafile配置,并尝试设置这些环境变量

# Depends how Node was compiled, already default on many Linuxes but can't hurt:
export NODE_OPTIONS=--use-openssl-ca

export NODE_EXTRA_CA_CERTS=/path/to/file.crt
此页面是否有帮助?
0 / 5 - 0 等级