Назад | Перейти на главную страницу

Git, вызываемый AWX, игнорирует вручную установленный корневой центр сертификации

AWX установлен на машине CentOS. Отдельная машина (gitlab.techraf) обслуживает веб-интерфейс GitLab через HTTPS с сертификатом, подписанным частным ЦС.

Сюжетная линия:

  1. На «свежей» системе выдаю команду:

    /usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /tmp/project
    

    и получите (ожидается):

    фатальный: невозможно получить доступ 'https://gitlab.techraf/techraf/project.git/': Издатель сертификата партнера не признан.

  2. Я устанавливаю корневой сертификат ЦС на машину AWX:

    update-ca-trust force-enable
    curl https://certificate.source/certificates/techrafCA.pem > /etc/pki/ca-trust/source/anchors/techrafCA.pem
    update-ca-trust extract
    
  3. Я повторяю вышеуказанное git clone, на этот раз получим правильный ответ:

    Клонирование в '/ tmp / project' ...
    удаленный: Подсчет объектов: 3, готово.
    удаленный: всего 3 (дельта 0), повторно используется 0 (дельта 0)
    Распаковка предметов: 100% (3/3), готово.

    В качестве проверки я побежал git clone использование разных учетных записей пользователей - нет проблем после установки сертификата корневого ЦС в пункте 2 - корневой ЦС, похоже, установлен системно. curl также принимает gitlab.techrafсертификат.

  4. (проблема) Я определяю проект в интерфейсе AWX и пытаюсь синхронизировать его из GitLab, но получаю:

    ЗАДАЧА [обновить проект с помощью git]
    ***********************************************
    фатальный: [localhost]: НЕ ВЫПОЛНЕНО! => {"изменено": false, "cmd": "/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /var/lib/awx/projects/_6__project"," не удалось ": правда," сообщение ":" фатальный: доступ невозможен "https://gitlab.techraf/techraf/project.git/': Издатель сертификата партнера не распознан. "," Rc ": 128," stderr ":" fatal: недоступен доступ "https://gitlab.techraf/techraf/project.git/': Издатель сертификата партнера не распознан. \ N "," stderr_lines ": [" fatal: недоступен доступ »https://gitlab.techraf/techraf/project.git/': Издатель сертификата партнера не распознан. "]," Stdout ":" Клонирование в' /var/lib/awx/projects/_6__project'...\n "," stdout_lines ": [" Клонирование в '/ var / lib / awx / projects / _6__project '... "]}

    В качестве проверки работоспособности я попробовал использовать проект с GitHub, и AWX правильно его извлекает.

    В качестве еще одной проверки вменяемости я побежал ansible localhost -m command -a "/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /tmp/project2, а также с другого компьютера, чтобы неинтерактивные сеансы оболочки работали одинаково. В любом случае сертификат был принят.


Что может быть причиной git (вызывается AWX / Ansible) без использования установленного techrafCA.pem сертификат?

Какой следующий шаг я могу предпринять для устранения проблемы?

Если вы сделаете то же самое внутри контейнера awx_task, то все заработает!

Проверено с моей настройкой AWX.

update-ca-trust force-enable
curl https://certificate.source/certificates/techrafCA.pem > /etc/pki/ca-trust/source/anchors/techrafCA.pem
update-ca-trust extract

Вам понадобится два файла:

  1. gitconfig
    [http]
        sslCAInfo = /etc/pki/ca-trust/source/anchors/yourca.pem
  1. yourca.pem

Добавьте в docker-compose.yml в задачу:

  - "./gitconfig:/etc/gitconfig"
  - "./yourca.pem:/etc/pki/ca-trust/source/anchors/yourca.pem"

Восстановить контейнер задач docker-compose up -d

Вы можете полностью отключить проверку сертификата GIT в AWX. Добавить AWX_TASK_ENV['GIT_SSL_NO_VERIFY'] = 'True' в контейнер awx_task и перезапустите его:

docker exec -ti awx_task vi /etc/tower/settings.py
docker restart awx_task