Вопрос или проблема
Кто-нибудь знает, можно ли настроить Docker Desktop для Mac так, чтобы он распознавал ZScaler Root CA, не модифицируя отдельные базовые образы? В данный момент я постоянно получаю
Проблема с SSL сертификатом: невозможно получить локальный сертификат авторитета
как во время сборки контейнеров, так и во время их работы.
Документация, похоже, предполагает, что он должен автоматически распознавать все CA в системном связке ключей, но это, похоже, не происходит.
https://stackoverflow.com/a/36454369 похоже, предполагает, что это можно добавить перманентным образом в саму виртуальную машину Docker, но я не смог найти аналогичный путь для MacOS. Любая информация была бы очень полезна, спасибо!
Ответ или решение
Проблемы с SSL-сертификатами в Docker на Mac с ZScaler
При работе с Docker Desktop на macOS и интеграцией ZScaler могут возникнуть проблемы с SSL-сертификатами. Одна из наиболее распространенных ошибок, с которой сталкиваются пользователи, — это сообщение:
SSL certificate problem: unable to get local issuer certificate
Это сообщение указывает на то, что контейнеры Docker не могут доверять корневому сертификату ZScaler, установленному на вашем компьютере, что приводит к сбоям как в процессе сборки контейнеров, так и во время их выполнения.
Почему возникает эта проблема?
Docker Desktop создает виртуальную машину (VM), в которой фактически запускаются контейнеры. Проблема в том, что хотя система macOS может успешно работать с сертификатами, установленными в вашем системном хранилище, Docker не всегда может «увидеть» эти сертификаты внутри своей виртуальной машины.
Решение проблемы
1. Установка корневого сертификата ZScaler в Docker
Чтобы решить вопрос с сертификатами, следует вручную добавить корневой сертификат ZScaler в Docker при его запуске. Для этого выполните следующие шаги:
-
Экспортируйте корневой сертификат ZScaler:
- Откройте «Доступ к ключам» (Keychain Access) на Mac.
- Найдите сертификат ZScaler, щелкните правой кнопкой мыши и выберите «Экспортировать».
- Сохраните его в формате
.pem
.
-
Импортируйте сертификат в Docker VM:
- Запустите терминал и выполните команду:
docker run -it --rm --name temp-container -v /var/run/docker.sock:/var/run/docker.sock alpine /bin/sh
- Установите необходимые пакеты:
apk add --no-cache ca-certificates
- Скопируйте корневой сертификат ZScaler во временный контейнер:
docker cp /path/to/zscaler-cert.pem temp-container:/etc/ssl/certs/
- Добавьте сертификат в хранилище доверенных сертификатов:
update-ca-certificates
- Запустите терминал и выполните команду:
-
Создайте образ на основе временного контейнера с обновленными сертификатами:
- Сохраните изменения в новый образ:
docker commit temp-container my-custom-image
- Сохраните изменения в новый образ:
-
Запустите контейнеры на основе нового образа:
Теперь вы можете использоватьmy-custom-image
как базовый образ для своих контейнеров, и они должны правильно работать с SSL-сертификатами ZScaler.
2. Проверка настроек ZScaler
Кроме того, необходимо убедиться, что настройки ZScaler корректны. В некоторых случаях может потребоваться изменение конфигурации ZScaler, чтобы исключить определенные адреса или добавить дополнительные параметры, которые могут помочь избежать проблем с HTTPS-трафиком.
3. Обновление Docker Desktop
Если вы используете устаревшую версию Docker Desktop, стоит обновить до самой последней версии. С обновлением могут быть внесены исправления, касающиеся обработки сертификатов и совместимости с различными инструментами безопасности.
Заключение
Проблемы с сертификатами SSL в Docker Desktop на macOS в сочетании с ZScaler могут быть решены путем мануального добавления корневого сертификата в хранилище трафика Docker. Следуя предложенным шагам, вы сможете настроить среду разработки таким образом, чтобы избежать ошибок, связанных с отсутствием доверия к сертификатам. Применение этих подходов обеспечит надежную работу контейнеров в условиях использования корпоративных систем защиты.
Если у вас остаются вопросы или возникают проблемы на каком-либо этапе, не стесняйтесь обращаться за поддержкой на специализированные форумы или к технической поддержке ZScaler.