HTTPS работает на хосте, но падает в Docker с x509: что проверить

Запрос к HTTPS API успешно проходит на компьютере, а из контейнера заканчивается unknown authority. Доверенные центры сертификации на хосте и внутри образа могут различаться. Отключение проверки TLS скрывает проблему и меняет модель доверия.

Как разобрать ситуацию

Сначала проверьте время, имя целевого узла и цепочку сертификата. Затем выясните, какой набор доверенных CA использует приложение внутри контейнера. Минимальный образ может не содержать нужного хранилища, а корпоративный прокси — выдавать сертификат от внутреннего центра. Добавлять доверие нужно только к проверенному центру и в правильное окружение.

Пример и ожидаемый результат

Учебный сервис обращается к api.example.test через корпоративный прокси. На рабочем компьютере внутренний CA установлен, а в образе его нет. Успех браузера поэтому не доказывает, что контейнер имеет тот же набор доверия.

Ожидаемый результат — приложение проверяет правильное имя и цепочку, доверяя только утверждённому центру. Отрицательный тест важен: успех любого сертификата означал бы слишком широкое исправление.

Проверка перед применением

  • Сравните сертификат и цепочку из нужной точки сети, а не только с хоста.
  • Уточните путь доверенного хранилища для языка и базового образа: он не универсален.
  • После настройки проверьте, что заведомо недоверенный сертификат всё ещё отклоняется.

Для воспроизводимости включайте нужный публичный сертификат CA в управляемую сборку по согласованному процессу, а не исправляйте каждый контейнер вручную. Смена или отзыв корпоративного центра требует обновления. Сертификат CA не является секретным ключом: приватный ключ центра не должен попадать в образ ни при каких настройках клиента.

Границы решения

Статья не предлагает устанавливать случайные сертификаты или использовать InsecureSkipVerify. Путь файла и процедура обновления зависят от образа. Реальный HTTPS-запрос и изменение доверенного хранилища здесь не выполнялись.

Если требуется самостоятельно собирать образ, связывать сервисы и разбирать поломки окружения, посмотрите программу нашего платного курса

Docker и Docker Compose: контейнеризация приложений. Перед записью сравните программу со своей задачей и подготовкой.

Техническая справка: docs.docker.com: документация.

Следующий шаг: Docker для разработчика: разборы запуска и хранения данных. По смежным вопросам: Exec format error в Docker: как проверить архитектуру образа и файла, Docker каждый раз заново ставит зависимости: как проверить порядок COPY.