unable to get local issuer certificate: Решение ошибки
Обзор Ошибки
Ошибка “unable to get local issuer certificate” возникает, когда приложение или библиотека не может проверить цепочку доверия для SSL-сертификата. Это может произойти в различных ситуациях, например, при использовании Git, cURL или npm. В большинстве случаев причина заключается в том, что не хватает корневого сертификата или настройки SSL неверны.
Распространенные Причины
- Отсутствие корневого сертификата: Сертификат, который вы используете, может не быть подписан на локальном уровне.
- Неверные настройки SSL: Неправильные параметры конфигурации могут блокировать проверку сертификатов.
- Использование самоподписанных сертификатов: Если вы используете самоподписанные сертификаты, они могут не распознаваться системой.
- Настройки окружения: В некоторых случаях среда выполнения (например, PHP или Node.js) может быть неверно настроена для работы с SSL.
Методы Решения
Метод 1: Изменение бэкенда SSL для Git
- Откройте терминал или Git Bash.
- Введите следующую команду:
bash
git config --global http.sslbackend schannel - Проверьте, решена ли проблема.
Пояснение: По умолчанию Git может использовать бэкенд криптографии Linux, который не всегда совместим с Windows.
Метод 2: Отключение проверки SSL в Git
- Откройте Git Bash.
- Выполните следующие команды:
bash
git config --global http.sslVerify false - Когда проблема будет решена, рекомендуется снова включить проверку:
bash
git config --global http.sslVerify true
Важно: Отключение проверки SSL открывает возможность для атак типа “человек посередине”. Используйте этот метод временно.
Метод 3: Настройка конфигурации cURL и OpenSSL
- Найдите файл
php.iniи откройте его. - Добавьте следующие строки:
“`ini
[curl]
curl.cainfo = “C:\xampp\php\extras\ssl\cacert.pem”
[openssl]
openssl.cafile = “C:\xampp\php\extras\ssl\cacert.pem”
``cacert.pem` с официального сайта cURL и сохраните его в указанной директории.
3. Скачайте
4. Перезапустите сервер (например, Apache).
Пояснение: Это позволяет PHP и cURL использовать правильные корневые сертификаты.
Метод 4: Настройка сертификатов в WAMP
- Убедитесь, что у вас установлен модуль
mod_sslдля Apache. - В файле
httpd.confубедитесь, что строкаLoadModule ssl_module modules/mod_ssl.soне закомментирована. - В
php.iniдобавьте строку:
ini
extension=php_openssl.dll - Перезапустите сервер WAMP.
Метод 5: Установка сертификатов для Python
- Откройте терминал и выполните следующую команду:
bash
open /Applications/Python\ 3.7/Install\ Certificates.command - Обновите пакет certifi:
bash
pip install --upgrade certifi
Пояснение: Это обеспечит корректную работу SSL в Python, особенно при использовании библиотек, таких как requests.
Метод 6: Настройка npm
- Откройте терминал.
- Выполните следующую команду:
bash
npm config set strict-ssl false - Если нужно, настройте реестр npm:
bash
npm config set registry http://registry.npmjs.org/
Важно: Отключение строгой проверки SSL также может подвергнуть вас риску атак.
Советы по Предотвращению
- Используйте только доверенные сертификаты, выданные сертификационными центрами.
- Регулярно обновляйте корневые сертификаты на вашем сервере.
- Избегайте отключения проверки SSL, если это возможно.
- Настройте окружение (например, PHP или Node.js) для работы с актуальными сертификатами.
Резюме
Ошибка “unable to get local issuer certificate” может возникать в различных ситуациях с использованием SSL. В этой статье были рассмотрены несколько методов решения данной проблемы, включая изменение настроек Git, конфигурацию cURL и OpenSSL, а также рекомендации по установке сертификатов для Python и npm. Соблюдение этих рекомендаций поможет избежать подобных проблем в будущем.

コメント