Ошибка SSL-сертификата: Невозможно получить локальный сертификат удостоверяющего центра | Решение проблемы

Ошибка SSL-сертификата в CURL: решение проблемы с локальным сертификатом

Что означает ошибка "unable to get local issuer certificate" в CURL

При использовании CURL для выполнения HTTP-запросов пользователи часто сталкиваются с ошибкой 60: "SSL certificate: unable to get local issuer certificate". Эта ошибка указывает на то, что CURL не может проверить подлинность SSL-сертификата удаленного сервера из-за отсутствия доступа к сертификату издателя (центра сертификации) на локальном устройстве.

Причины возникновения ошибки SSL-сертификата

Существует несколько основных причин, по которым может возникать эта ошибка:

  1. На вашей системе отсутствует актуальный файл корневых сертификатов.
  2. CURL не настроен на использование правильного пути к файлу сертификатов.
  3. Сертификат удаленного сервера выдан неизвестным или непризнанным центром сертификации.
  4. В некоторых корпоративных средах используются прокси-серверы с SSL-инспекцией.

Способы решения проблемы с SSL-сертификатом в CURL

Установка актуального файла сертификатов CA

Самый надежный способ решения проблемы — загрузить актуальный пакет сертификатов доверенных центров сертификации (CA):

bash
curl -O https://curl.se/ca/cacert.pem

После загрузки файла укажите путь к нему в вашей команде CURL:

bash
curl —cacert /путь/к/cacert.pem https://ваш-сайт.com

Настройка переменной окружения CURL_CA_BUNDLE

Чтобы не указывать путь к файлу сертификатов в каждой команде, можно настроить переменную окружения:

bash
export CURL_CA_BUNDLE=/путь/к/cacert.pem

Для постоянной настройки добавьте эту строку в ваш файл .bashrc или .bash_profile.

Отключение проверки SSL (не рекомендуется для продакшена)

В исключительных случаях, например при тестировании, можно отключить проверку SSL:

bash
curl -k https://ваш-сайт.com

или

bash
curl —insecure https://ваш-сайт.com

Важно: этот метод небезопасен и не рекомендуется для использования в продакшн-среде, так как он подвергает ваши соединения риску атак "человек посередине" (MITM).

Особенности решения проблемы в разных операционных системах

Windows

В Windows можно установить актуальные сертификаты и настроить CURL, указав путь к файлу сертификатов в системной переменной:

  1. Скачайте файл cacert.pem с официального сайта CURL
  2. Сохраните его в надежном месте, например, C:\curl-ca\cacert.pem
  3. Создайте системную переменную CURL_CA_BUNDLE с этим путем

Linux

В большинстве дистрибутивов Linux можно решить проблему, установив пакет с сертификатами CA:

В Debian/Ubuntu:
bash
sudo apt-get install ca-certificates

В CentOS/RHEL:
bash
sudo yum install ca-certificates

macOS

Пользователи macOS могут обновить сертификаты с помощью Homebrew:

bash
brew install curl-ca-bundle

Проверка правильности настройки SSL-сертификатов

После настройки сертификатов выполните тестовый запрос к защищенному сайту:

bash
curl -v https://www.google.com

Если настройка выполнена правильно, вы увидите сообщение о успешной проверке сертификата без ошибки 60.

Заключение

Ошибка "unable to get local issuer certificate" в CURL указывает на проблемы с проверкой SSL-сертификата. Решение заключается в правильной настройке доступа CURL к актуальному файлу корневых сертификатов. Следуя рекомендациям из этой статьи, вы сможете решить проблему и обеспечить безопасное соединение для ваших HTTP-запросов.

Не пренебрегайте проверкой SSL-сертификатов, так как это критически важно для безопасности ваших приложений и защиты данных от перехвата или подмены.

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *