npm LinuxWindowsnpm

npm: npm не может скачать пакет из-за ошибки сертификата

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

При скачивании пакета npm выдаёт UNABLE_TO_GET_ISSUER_CERT_LOCALLY, SELF_SIGNED_CERT_IN_CHAIN или CERT_HAS_EXPIRED. Отличайте неполную цепочку реестра от корпоративного TLS-посредника и неверного времени.

В этой статье
  1. Симптомы и условия возникновения
  2. Причины и как их отличить
  3. Пошаговая диагностика и решение
  4. Как проверить результат и что делать, если не помогло

#Симптомы и условия возникновения

При скачивании пакета npm выдаёт UNABLE_TO_GET_ISSUER_CERT_LOCALLY, SELF_SIGNED_CERT_IN_CHAIN или CERT_HAS_EXPIRED. Отличайте неполную цепочку реестра от корпоративного TLS-посредника и неверного времени. Для начала проверьте используемую версию среды и точный текст ошибки на копии проекта, не меняя рабочий сервер.

#Причины и как их отличить

Возможная причинаКак узнатьЧто делать
Недоверенный корпоративный кореньВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление.В корпоративной сети npm ошибается, браузер доверяетУстановить утверждённый CA с участием администратора.
Сломанная цепочка реестраВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление.Ошибка на нескольких независимых устройствахИсправлять сервер сертификатов, а не клиентскую проверку.
Неверный реестр или времяВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление.В .npmrc указан частный registry либо дата системы неправильнаСверить адрес и дату, проверить доступный CA.

#Пошаговая диагностика и решение

  1. 1. Запишите точный код npm и адрес реестраИз журнала npm скопируйте только код ошибки и безопасную часть URL. Не передавайте содержимое ~/.npmrc: там могут быть токены доступа.
  1. 2. Проверьте фактический registryВ корне нужного проекта выполните npm config get registry. Также проверьте настройки registry по областям пакетов в .npmrc; адрес общего реестра не покрывает автоматически @scope:registry.
  2. Безопасная команда чтения; вывод URL реестра без токена
    Linux · Терминал (Bash)Команда
    Безопасная команда чтения; вывод URL реестра без токена. Не копируйте всё содержимое .npmrc.
    npm config get registry
  1. 3. Проверьте дату и сертификат снаружи npmСверьте время системы; затем запустите curl -Iv https://registry.npmjs.org/ либо URL разрешённого частного реестра. Не применяйте --insecure: такой обход не решает проблему цепочки.
  1. 4. Выясните, есть ли корпоративная TLS-проверкаЕсли ошибка только внутри рабочей сети, спросите у ИТ-службы, используется ли собственный доверенный CA. Попросите публичный сертификат центра в PEM, а не закрытый ключ.
  1. 5. Настройте доверенный сертификат для npmВ тестовой копии проекта укажите путь к PEM через утверждённый проектный .npmrc или временно npm_config_cafile. Название параметра cafile; файл должен существовать и быть доверенным. Не храните пароль рядом с ним.
  2. Linux/macOS: путь приведён как пример
    Linux · Терминал (Bash)Команда
    Linux/macOS: путь приведён как пример. Проверяет соединение с выбранным registry через указанную CA; Windows использует свой полный путь к PEM.
    npm --cafile=/path/to/approved-ca.pem ping
  1. 6. Проверьте настройки Node.jsЕсли npm использует Node с другим хранилищем сертификатов, сравните версию npm/node и параметры NODE_EXTRA_CA_CERTS. Устанавливайте доверенную CA до запуска процесса npm, а не внутри запущенного скрипта.
  1. 7. Повторите установку без отключения TLSВ тестовой копии выполните npm view имя-пакета version и убедитесь, что запрос проходит с проверкой сертификата. Если продолжает падать, передайте администратору код TLS и сертификат сервера для восстановления цепочки.

#Как проверить результат и что делать, если не помогло

Команда npm view обращается к ожидаемому реестру без сертификатных ошибок, параметр strict-ssl остаётся включён.

Если неисправность повторилась, выпишите первый код ошибки и действие, на котором она возвращается. Сравните версию Node.js/npm, рабочий каталог, настройки процесса и журнал тестового запуска. Откатите только внесённые изменения из предварительно сохранённой копии, затем разберите причину на отдельной среде.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.