Данный проект помогает реализовать TLS подключение к Docker Remote API с аутентификацией по сертификату с проверкой отзыва клиентского сертификата. Операционной системой на сервере является Windows Server 1803+.
Для нужд удаленного управления Docker'ом, Docker умеет предоставлять веб-API. Это API может как вовсе не требовать аутентификации (что крайне не рекомендуется), так и использовать аутентификация по сертификату. Проблема заключается в том, что родная аутентификация по сертификату не предусматривает проверку отзыва сертификата. А это может стать проблемой.
Для сборки образа нам потребуется публичный сертификат центра сертификации (ca.cer), который будет выдавать сертификаты пользователям. Этот сертификат будет установлен в доверенные корневые центры сертификации контейнера, в котором будет запущен наш прокси. Установка его необходима для процедуры проверки сертификата.
Я не заморачивался написанием такого Docker-файла, который сам бы собирал приложение. Поэтому его надо собрать самостоятельно. Из папки с dockerfile запускаем:
dotnet publish -c Release -o ..\publish .\DockerTLS\DockerTLS.csproj
Сейчас у нас должны быть: Dockerfile
, publish
, ca.cer
. Собираем образ:
docker build -t vitaliyorg.azurecr.io/docker/proxy:1809 .
docker push vitaliyorg.azurecr.io/docker/proxy:1809
Разумеется, имя образа может быть любое.
Для запуска контейнера нам понадобятся сертификат сервера certificate.pfx
и файл с паролем password.txt
. Все содержимое файла считается паролем. Поэтому лишних переводов строк быть не должно. Пусть все это добро находится в папке: c:\data
на сервере, где установлен Docker.
На этом же сервере запускаем:
docker run --name docker-proxy -d -v "c:/data:c:/data" -v \\.\pipe\docker_engine:\\.\pipe\docker_engine --restart always -p 2376:2376 vitaliyorg.azurecr.io/docker/proxy:1809
С помощью docker logs
можно видеть кто что делал. Там же можно видеть попылки подключения, которые завершились неудачно.
Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.
Для регистрации можно использовать Microsoft Account, Azure Active Directory, Google, Facebook и Twitter.