Перейти к содержимому
ecdsa.com
Yarn Classic (1.x); Yarn 4 prints the aliasМенеджеры пакетов

Сообщение об ошибке

error Error: unable to get local issuer certificate

Также выводится как

  • YN0001: RequestError: unable to get local issuer certificate

Yarn 1.x выводит «error Error: unable to get local issuer certificate», а затем трассировку стека Node.js. Если реестр отправляет только конечный сертификат, вместо этого выводится «unable to verify the first certificate».

Что это означает

Yarn Classic получил от реестра цепочку сертификатов (конечный и промежуточный), но Node.js не доверяет корневому сертификату, стоящему над ней. Yarn выводит ошибку Node.js без изменений. С реестром обычно всё в порядке: на этой машине нет корневого сертификата компании или прокси, к которому ведёт цепочка.

Почему это происходит

Как исправить

  1. 1.

    Задайте cafile в Yarn 1

    Укажите в Yarn корневой сертификат компании (или пакет сертификатов, в который входят и публичные корневые сертификаты, поскольку cafile заменяет сертификаты по умолчанию для запросов к реестру).

    bash
    yarn config set cafile /etc/ssl/private-ca/corp-root-ca.pem
  2. 2.

    Или используйте NODE_EXTRA_CA_CERTS

    Переменная добавляет корневой сертификат к встроенному списку Node.js для Yarn и для любого другого процесса Node.js, запущенного с этой переменной.

    bash
    export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-root-ca.pem
    yarn install --frozen-lockfile
  3. 3.

    Yarn 4: httpsCaFilePath

    Yarn 4 выводит эту ошибку как «YN0001: RequestError: unable to get local issuer certificate» и берёт файл CA из httpsCaFilePath в .yarnrc.yml.

    yaml
    # Yarn 4: .yarnrc.yml
    httpsCaFilePath: /etc/ssl/private-ca/corp-root-ca.pem
  4. 4.

    Проверьте, какие хосты указаны в lock-файле

    Если URL в полях resolved указывают на внутреннее зеркало, исправлять нужно сертификат этого зеркала или ваше хранилище доверенных сертификатов, а не настройку реестра.

    bash
    # Which hosts does the lockfile download from?
    grep -oE 'resolved "https://[^/]+' yarn.lock | sort | uniq -c

Связанные ошибки

Открыть всю базу ошибок подписей