Настройка GitFlic агента при использовании самоподписного сертификата
Если сервер GitFlic self-hosted настроен с самоподписанным сертификатом, то для корректной работы агентов необходимо выполнить ряд дополнительных настроек.
В данной инструкции описаны шаги для всех типов агентов и для агентов, запускаемых в Docker-контейнере.
Добавление сертификата в доверенные
Для всех типов агента в первую очередь необходимо добавить самоподписной сертификат в доверенные сертификаты и в Java Key Store.
-
Скопируйте самоподписной сертификат на сервер, где планируется запуск агентов
-
Добавьте сертификат в доверенные сертификаты
sudo cp selfsigned.crt /usr/local/share/ca-certificates/selfsigned.crt sudo update-ca-certificates
sudo cp selfsigned.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust extract
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain selfsigned.crt
где
selfsigned.crt
- самоподписной сертификат -
Импортируйте сертификат в Java Key Store (JKS)
keytool -import -noprompt \ -storepass changeit \ -trustcacerts \ -alias selfsigned-cert \ -file selfsigned.crt \ -keystore "$JAVA_HOME/lib/security/cacerts"
Убедитесь, что переменная $JAVA_HOME доступна в вашем окружении. В противном случае укажите путь до инсталляции OpenJDK вручную.
-
Выполните регистрацию агента и убедитесь, что она завершается без ошибок
Настройка агента с типом Docker
Для агента с типом Docker необходимо передавать самоподписной сертификат в контейнер, в котором выполняется конвейер. Данная возможность доступна в агенте версии 4.0.0 и выше.
-
Убедитесь, что используется агент версии 4.0.0 и выше
-
Убедитесь, что сертификат создан с опцией SAN (Subject Alternative Name)
Сертификат должен быть создан с указанием SAN. При использовании сертификата для
localhost
, необходимо также добавить в SANhost.docker.internal
. -
Настройте передачу сертификата в контейнер конвейера
Для передачи сертификата в контейнер конвейера, настройте в конфигурации агента монтирование самоподписного сертификата.
Пример:
docker.volumes[0]=/home/user/selfsigned.crt:/etc/gitflic-runner/certs/selfsigned.crt
где
/home/user/selfsigned.crt
- путь до сертификата на хосте, а/etc/gitflic-runner/certs/selfsigned.crt
- путь в контейнере -
Добавьте переменную
CA_CERTIFICATES_PATH
в CI/CDДобавьте в CI/CD переменную
CA_CERTIFICATES_PATH
(например, через настройки CI/CD в веб-интерфейсе или в файлеgitflic-ci.yaml
и в качестве ее значения укажите путь до сертификата в файловой системе контейнера, который вы прописали в конфигурации агента (п.3)variables: CA_CERTIFICATES_PATH: /etc/gitflic-runner/certs/selfsigned.crt
Настройка агента, запускаемого в Docker контейнере
Если агент запускается в Docker контейнере, то необходимо внести правки в Dockerfile
агента и выполнить пересборку образа.
-
Добавьте команду для копирования сертификата с хоста в контейнер с агентом
Пример:
COPY /home/user/selfsigned.crt /cert/selfsigned.crt
где
/home/user/selfsigned.crt
- самоподписной сертификат -
Добавьте команду для импорта данного сертификата в Java Key Store
RUN keytool -import -noprompt \ -storepass changeit \ -trustcacerts \ -alias my-selfsigned-cert \ -file /cert/selfsigned.crt \ -keystore "$JAVA_HOME/lib/security/cacerts"
-
Пересоберите образ и запустите агента
docker compose up --build
Дополнительно
Выполните дополнительные шаги, если в контейнере запускается агент с типом docker
:
-
Внесите правки в ENTRYPOINT, чтобы добавить строку с монтированием сертификата в конфигурацию агента
ENTRYPOINT ([ -f config/application.properties ] && java -jar runner.jar start --config=config/application.properties) || (java -jar runner.jar register --url ${REG_URL} --registration-token ${REG_TOKEN} && cat application.properties >> config/application.properties && echo "docker.volumes[0]=/home/user/selfsigned.crt:/etc/gitflic-runner/certs/selfsigned.crt" >> config/application.properties && java -jar runner.jar start --config=config/application.properties)
Вместо
/home/user/selfsigned.crt
укажите путь к самоподписному сертификату на хосте, так как внутри контейнера конвейера задействуется сокет Docker хоста, а не контейнера с агентом. -
Добавьте переменную
CA_CERTIFICATES_PATH
в CI/CDvariables: CA_CERTIFICATES_PATH: /etc/gitflic-runner/certs/selfsigned.crt
-
Пересоберите образ и запустите агента
docker compose up --build