AWX 调用的 Git 会忽略手动安装的根 CA

AWX 调用的 Git 会忽略手动安装的根 CA

澳大利亚水产养殖协会安装在 CentOS 机器上。另一台机器(gitlab.techraf)通过 HTTPS 为 GitLab 的 Web 界面提供服务,证书由私有 CA 签名。

故事情节:

  1. 在“新”系统上我发出以下命令:

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

    并得到(预期):

    致命:无法访问‘ https://gitlab.techraf/techraf/project.git/’:无法识别同行的证书颁发者。

  2. 我在 AWX 机器上安装了根 CA 证书:

    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 点安装根 CA 证书后没有问题 - 根 CA 似乎是系统安装的。curl也接受了gitlab.techraf的证书。

  4. (问题)我在 AWX 界面中定义了一个项目并尝试从 GitLab 同步它,但是我得到:

    任务 [使用 git 更新项目]
    ****************************************************
    致命:[localhost]:失败! => {"changed": false, "cmd": " /usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /var/lib/awx/projects/_6__project", "failed": true, "msg": "致命:无法访问' https://gitlab.techraf/techraf/project.git/':无法识别对等方的证书颁发者。", "rc": 128, "stderr": "致命:无法访问' https://gitlab.techraf/techraf/project.git/':无法识别对等方的证书颁发者。\n", "stderr_lines": ["致命:无法访问' 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,以及从另一台机器运行,以确保非交互式 shell 会话工作正常。无论哪种情况,证书都被接受了。


git导致(AWX/Ansible 调用) 不使用已安装证书的原因可能是什么techrafCA.pem

我可以采取什么下一步措施来解决该问题?

答案1

如果您在 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

答案2

您需要两个文件:

  1. git配置
    [http]
        sslCAInfo = /etc/pki/ca-trust/source/anchors/yourca.pem
  1. 你的卡

在任务中添加docker-compose.yml:

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

重新创建任务容器docker-compose up -d

答案3

您可以在 AWX 中完全禁用 GIT 证书验证。添加AWX_TASK_ENV['GIT_SSL_NO_VERIFY'] = 'True'到 awx_task 容器并重新启动它:

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

相关内容