O Git chamado pelo AWX ignora a CA raiz instalada manualmente

1

O AWX está instalado na máquina do CentOS. Uma máquina separada ( gitlab.techraf ) serve a interface web do GitLab por HTTPS com um certificado assinado por uma CA privada.

O enredo:

  1. Em um sistema "novo" eu emito o comando:

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

    e obtenha (esperado):

    fatal: unable to access 'https://gitlab.techraf/techraf/project.git/': Peer's Certificate issuer is not recognized.

  2. Eu instalo o certificado da CA raiz na máquina do 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. Eu repito o git clone acima, dessa vez obtendo uma resposta correta:

    Cloning into '/tmp/project'...
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.

    Como verificação de integridade, executei git clone usando contas de usuário diferentes - não há problema após a instalação do certificado de CA raiz no ponto 2 - a CA raiz parece estar instalada no sistema. curl também aceita o certificado gitlab.techraf .

  4. (problema) Eu defino um projeto na interface do AWX e tento sincronizá-lo a partir do GitLab, no entanto recebo:

    TASK [update project using git]
    ************************************************
    fatal: [localhost]: FAILED! => {"changed": false, "cmd": "/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /var/lib/awx/projects/_6__project", "failed": true, "msg": "fatal: unable to access 'https://gitlab.techraf/techraf/project.git/': Peer's Certificate issuer is not recognized.", "rc": 128, "stderr": "fatal: unable to access 'https://gitlab.techraf/techraf/project.git/': Peer's Certificate issuer is not recognized.\n", "stderr_lines": ["fatal: unable to access 'https://gitlab.techraf/techraf/project.git/': Peer's Certificate issuer is not recognized."], "stdout": "Cloning into '/var/lib/awx/projects/_6__project'...\n", "stdout_lines": ["Cloning into '/var/lib/awx/projects/_6__project'..."]}

    Como teste de integridade, tentei com um projeto do GitHub e o AWX o buscou corretamente.

    Como outra verificação de integridade, executei ansible localhost -m command -a "/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /tmp/project2 , bem como de uma máquina diferente para garantir que as sessões de shell não interativas funcionassem da mesma maneira. Em ambos os casos, o certificado foi aceito.

Qual pode ser a causa do git (chamado pelo AWX / Ansible) não usar o certificado techrafCA.pem instalado?

Qual é o próximo passo que posso dar para solucionar o problema?

    
por techraf 09.10.2017 / 04:59

2 respostas

1

Se você fizer o mesmo dentro do contêiner awx_task, então funciona!

Verificado com minha configuração do 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
    
por 26.10.2017 / 19:19
-1

Você pode desativar a verificação do certificado GIT completamente no AWX. Adicione AWX_TASK_ENV['GIT_SSL_NO_VERIFY'] = 'True' ao contêiner awx_task e reinicie-o:

docker exec -ti awx_task vi /etc/tower/settings.py
docker restart awx_task
    
por 26.12.2017 / 23:48