---
title: "Ошибки сертификата корпоративного прокси в npm, Git и curl на Mac · Руководства Kilobat"
url: "https://kilobat.app/ru/guides/corporate-proxy-certificates.html"
description: "Исправьте “unable to get local issuer certificate” в npm, Node, Git, curl и Homebrew за корпоративным прокси — не отключая проверку сертификатов."
---

VPN, прокси и фильтры

# Сертификаты корпоративного прокси ломают инструменты Терминала на Mac

Некоторые корпоративные сети проверяют трафик HTTPS. Прокси подписывает трафик корневым сертификатом компании, и инструменты, которые ему не доверяют, перестают работать.

Относится к: всем актуальным версиям macOS. Для `NODE_USE_SYSTEM_CA` в Node.js нужен Node.js 22.19, 24.6 или новее. · Проверено: 29 октября 2026 г.

## Симптомы

- npm или Node показывает “self-signed certificate in certificate chain” или “unable to get local issuer certificate”.
- Git показывает “SSL certificate problem” для удалённых репозиториев по HTTPS.
- Safari открывает сайт, а curl или Python — нет.
- Ошибки появляются только в корпоративной сети или через VPN.

## Вероятные причины

- **Проверка TLS.** Прокси заменяет сертификат сайта на сертификат, подписанный корневым сертификатом компании.
- **Разные хранилища доверенных сертификатов.** Safari использует связку ключей macOS. Многие инструменты командной строки используют свой список доверенных сертификатов.
- **Не задан прокси.** Инструменты в Терминале не всегда используют системный прокси. Им нужны переменные прокси или собственная настройка.

## Как проверить

1. Покажите цепочку сертификатов, которую отправляет сервер. Посмотрите на издателя верхнего сертификата.

   ```
   openssl s_client -connect registry.npmjs.org:443 -servername registry.npmjs.org -showcerts </dev/null
   ```
2. Покажите рукопожатие TLS с помощью curl.

   ```
   curl -v https://registry.npmjs.org/ -o /dev/null
   ```
3. Найдите корневой сертификат компании в приложении «Связка ключей». Поищите название компании в связке ключей «Система».
4. Покажите переменные прокси в своей оболочке.

   ```
   env | grep -i proxy
   ```

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

1. Получите корневой сертификат компании в ИТ-отделе в виде файла PEM. Не доверяйте сертификату из неизвестного источника.
2. Для инструментов на Node.js укажите файл в `NODE_EXTRA_CA_CERTS`. После этого перезапустите инструмент.

   ```
   export NODE_EXTRA_CA_CERTS=~/certs/company-root.pem
   ```
3. В Node.js 22.19, 24.6 или новее можно использовать сертификаты, которым доверяет связка ключей.

   ```
   export NODE_USE_SYSTEM_CA=1
   ```
4. Для npm задайте файл сертификата.

   ```
   npm config set cafile ~/certs/company-root.pem
   ```
5. Для Git задайте файл сертификата.

   ```
   git config --global http.sslCAInfo ~/certs/company-root.pem
   ```
6. Для curl укажите файл с помощью `--cacert`.

   ```
   curl --cacert ~/certs/company-root.pem https://example.com
   ```
7. Задайте корпоративный прокси для инструментов Терминала, если ваш ИТ-отдел его использует.

   ```
   export https_proxy=http://proxy.example.com:8080
   ```
8. Не отключайте проверку сертификатов, например `strict-ssl` или `http.sslVerify`. Это делает подключение небезопасным.

## С Kilobat

1. Проверка подключения Kilobat показывает сбой TLS как отдельный уровень. Она также сообщает, если через системный прокси подключение работает, а напрямую — нет.

   ```
   kilobat why https://registry.npmjs.org/
   ```
2. Добавьте `--app`, чтобы использовать переменные прокси из окружения этого приложения.

   ```
   kilobat why https://registry.npmjs.org/ --app process:node
   ```

## Вопросы

**Почему Safari работает, а npm — нет?**

Safari доверяет сертификатам из связки ключей macOS. npm использует сертификаты, встроенные в Node.js, если не добавить сертификат компании.

**Безопасно ли задать strict-ssl false?**

Нет. Это отключает все проверки сертификатов для реестра. Лучше добавьте корневой сертификат компании.

## Источники

- [Node.js: Command-line API, NODE_EXTRA_CA_CERTS и --use-system-ca](https://nodejs.org/api/cli.html)
- [Документация npm: config (cafile, proxy, https-proxy, strict-ssl)](https://docs.npmjs.com/cli/v11/using-npm/config)
- git-config(1), http.sslCAInfo и http.proxy, man-страница из macOS 27.2 (Git 2.56)
- [Поддержка Apple: изменение настроек доверия для сертификата в приложении «Связка ключей»](https://support.apple.com/guide/keychain-access/kyca11871)
- curl(1), man-страница из macOS 27.2

Источники проверены 29 октября 2026 г. Man-страницы — те, что установлены вместе с macOS; откройте любую командой `man <name>` в Терминале.

## Похожие руководства

- [Загрузки Homebrew или npm не проходят на Mac](https://kilobat.app/ru/guides/homebrew-npm-download-fails.html): Homebrew скачивает файлы с помощью curl и Git.
- [Настройки прокси мешают приложениям подключаться на Mac](https://kilobat.app/ru/guides/proxy-settings-breaking-apps.html): Настройка прокси отправляет трафик через другой сервер.
- [«Это подключение не является конфиденциальным» (This Connection Is Not Private) и предупреждения о сертификатах на Mac](https://kilobat.app/ru/guides/connection-not-private-mac.html): Safari показывает предупреждение о сертификате, когда не может подтвердить подлинность сайта.
- [SSH и Git не дожидаются ответа на Mac](https://kilobat.app/ru/guides/ssh-git-timeouts.html): SSH и Git нужно рабочее TCP-подключение к серверу.
