docker x509問題的處理


事情是這樣的:

我搭建了一個docker的私有倉庫,本來在docker客戶端設置insecure-registries后(如下設置),用的是好好的。

#  在/etc/docker/daemon.json里添加insecure-registries、registry-mirror

# cat /etc/docker/daemon.json
{
  "insecure-registries": ["nexus3-docker-cicd.apps.test.openshift.com:80", "nexus3-docker-hosted-cicd.apps.test.openshift.com:80"],
  "registry-mirror": ["nexus3-docker-cicd.apps.test.openshift.com:80"]
}

# systemctl daemon-reload
# systemctl restart docker

然后,我給這個倉庫的訪問加上了https,既然是https了,那就不應該是insecure-registries了,所以我去掉了insecure-registries的設置(如下設置),嘿嘿嘿……

# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://nexus3-docker-cicd.apps.test.openshift.com"]
}

# systemctl daemon-reload
# systemctl restart docker

再然后,就報錯了。

docker pull x509:certificate signed by unknown authority

解決方法:

我們瀏覽器訪問一個https的網站時,由瀏覽器去檢測https的證書的可信性。瀏覽器內置一些信任的CA機構,由這些CA機構頒發的證書,瀏覽器則認為是安全的,當我們的自簽名證書提示證書不安全時,可以手動把這個證書添加到瀏覽器的信任列表里。

同理,當我們在用docker pull等命令時,docker調用的是系統的CA,這些證書保存在/etc/pki/certs/ca-bundle.crt中(centos系統),所以我們把網站的https證書加入到這個文件,重啟服務即可。

# 把網站的https證書內容加載到系統ca-bundle中
# echo -n | openssl s_client -showcerts -connect nexus3-docker-cicd.apps.test.openshift.com:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/pki/tls/certs/ca-bundle.crt
# systemctl daemon-reload
# systemctl restart docker

突然發現,openssl命令好強大!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM