Проблема
Клиент (curl, OpenSSL, браузер) не может проверить сертификат сервера, так как не находит цепочку доверия до корневого центра сертификации (CA) в локальном хранилище.

Причины
- Отсутствует или повреждён корневой/промежуточный сертификат CA в системном хранилище доверенных корней.
- Сервер не отправляет полную цепочку сертификатов (только свой, без промежуточных).
- Неверный порядок сертификатов в цепочке.
- Использование самоподписанного сертификата без добавления его в доверенные.
- Устаревший набор корневых сертификатов ОС/OpenSSL.

Решение

1. Проверить цепочку, которую отдаёт сервер
bash
openssl s_client -connect example.com:443 -showcerts

Убедиться, что сервер передаёт все промежуточные сертификаты. Если нет — исправлять на стороне сервера.

2. Получить недостающие сертификаты CA
Скачать корневой и промежуточные сертификаты с сайта CA или через openssl s_client, сохранить в .crt/.pem.

3. Добавить сертификаты в локальное хранилище

Linux (Debian/Ubuntu)
bash
sudo cp certificate.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates


Linux (RHEL/CentOS/Fedora)
bash
sudo cp certificate.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract


Windows
- Открыть `mmc` -> `Добавить оснастку "Сертификаты"` (для локального компьютера).
- Импортировать сертификат в `Доверенные корневые центры сертификации` (для промежуточных — в `Промежуточные центры`).

4. Использовать конкретный файл CA при вызове curl/OpenSSL
bash
curl --cacert /path/to/ca-bundle.crt https://example.com
openssl s_client -connect example.com:443 -CAfile /path/to/ca-bundle.crt


5. Если проблема в Python/requests
Указать путь к корневому сертификату через переменную окружения:
bash
export REQUESTS_CA_BUNDLE=/path/to/ca-bundle.crt
export SSL_CERT_FILE=/path/to/ca-bundle.crt


6. Для самоподписанного сертификата
- Добавить его в доверенные (как выше) или игнорировать проверку (только для тестов).
bash
curl -k https://self-signed.local

Примечание: -k/–insecure небезопасно, только разработка/тестирование.

7. Обновить корневые сертификаты системы
bash
sudo apt install ca-certificates   # Debian/Ubuntu
sudo yum update ca-certificates # RHEL/CentOS


8. Проверить корректность цепочки
bash
openssl verify -CAfile ca-bundle.crt server.crt

Ошибка `unable to get local issuer certificate` — добавить промежуточный.