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.
