harbor docker客戶端登陸失敗 X509:cannot validate certificate...

錯誤如下(博主開始使用的http形式,後來改爲https,由於一開始使用的IP,後來生成證書時採用的是域名,沒有修改harbor中的hostname配置導致以下錯誤):

iverson@worker:/etc/docker/certs.d/gerrit.backup.com$ sudo docker login gerrit.backup.com
Username: amax
Password: 
Error response from daemon: Get https://gerrit.backup.com/v2/: Get https://192.168.121.100/service/token?account=amax&client_id=docker&offline_token=true&service=harbor-registry: x509: cannot validate certificate for 192.168.121.100 because it doesn't contain any IP SANs

此處給出排查思路:

這個錯誤的原因大多是因爲證書相關原因。

首先刪除所有簽名,然後根據官方配置https文檔操作一遍:

https://goharbor.io/docs/2.0.0/install-config/configure-https/

操作後首先檢測本地是否可以docker login,如果本地失敗,建議重新配置,若多次失敗,刪除已解壓的harbor安裝包重新解壓部署;

本地docker login成功,異地失敗:證書配置沒問題,harbor配置有誤,此時檢測harbor的配置文件中hostname是否與證書生成是配置的域名一樣;

/etc/hosts是否添加域名解析。

 

 

建議各位看官,在使用harbor時配置域名+https形式,這種形式配置的harbor在客戶端想登陸使用時無需重啓客戶端

觀點1:harbor異地命令行登陸只支持域名形式訪問,ip形式也可以訪問,需要配置異地客戶端docker配置,配置後重啓生效,此種形式不推薦,避免客戶端有不方便重啓的容器。

$ cat /etc/docker/daemon.json 
{
"insecure-registries": ["https://192.168.121.100"]
}

# 此形式配置後需要重啓docker,如果添加多個倉庫,#號爲註釋:
$ cat /etc/docker/daemon.json 
{
"insecure-registries": ["https://192.168.121.100,https://192.168.121.101"]
}

觀點2:

https在docker中默認使用的,若harbor是http,則需要配置客戶端使用http形式,配置後仍需重啓,不推薦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章