Ssl-Certificate

AWX 呼叫的 Git 忽略手動安裝的根 CA

  • August 20, 2019

AWX安裝在 CentOS 機器上。一台單獨的機器 ( gitlab.techraf) 通過 HTTPS 使用由私有 CA 簽名的證書為 GitLab 的 Web 界面提供服務。

劇情:

  1. 在“新”系統上,我發出命令:
/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /tmp/project

並獲得(預期):

致命:無法訪問“ https://gitlab.techraf/techraf/project.git/”:無法辨識對等方的證書頒發者。

  1. 我在 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
  1. 我重試上面的方法git clone,這次得到了正確的響應:

複製到“/tmp/project”…

遠端:計數對象:3,完成。

遠端:總共 3 個(增量 0),重用 0 個(增量 0)

拆包對象:100% (3/3),完成。

作為健全性檢查,我git clone使用不同的使用者帳戶執行 - 在第 2 點安裝根 CA 證書後沒問題 - 根 CA 似乎是系統安裝的。curl也接受gitlab.techraf的證書。 4. **(問題)**我在 AWX 界面中定義了一個項目並嘗試從 GitLab 同步它,但是我得到:

任務

$$ update project using 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”:“fatal:無法訪問’ https://gitlab.techraf/techraf/project.git/’:無法辨識對等的證書頒發者。”,“rc”:128, “stderr”: “fatal: 無法訪問 ’ https://gitlab.techraf/techraf/project.git/’: Peer 的證書頒發者無法辨識。\n”, “stderr_lines”: [“fatal: 無法訪問’ https://gitlab.techraf/techraf/project.git/’: Peer 的證書頒發者無法辨識。”], “stdout “: “複製到 ‘/var/lib/awx/projects/_6__project’…\n”, “stdout_lines”:$$ “Cloning into ‘/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證書的原因可能是什麼?

下一步我可以採取什麼措施來解決問題?

如果您在 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. 你的ca.pem

在任務中添加到 docker-compose.yml:

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

重新創建任務容器docker-compose up -d

引用自:https://serverfault.com/questions/877530