之前以http搭建了一個(gè)harbor作為測試玩樂狡恬,這次正式使用harbor作為生產(chǎn)環(huán)境籽孙,將之前的harbor更改為https脚牍。
一、修改配置文件
- 執(zhí)行以下命令停止Harbor
sudo docker-compose down -v
- 修改配置文件
sudo vim harbor.cfg
image.png
- 將hostname更改為xxxxxx.com,ui_url_protocol更改為https方式宵膨。
- 將ssl_cert以及ssl_cert_key的名字更改為你要生成證書的名字。
二炸宵、生成證書
按照官方文檔Harbor生成證書辟躏。
- 生成CA證書
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-x509 -days 365 -out ca.crt
- 生成證書簽名
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout yourdomain.com.key \
-out yourdomain.com.csr
- FQDN方式生成注冊表主機(jī)的證書
openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out yourdomain.com.crt
以上yourdomain.com替換為要使用的FQDN必須和harbor中的hostname以及ssl_cert配置相同。
三土全、證書配置以及安裝
- 獲取yourdomain.com.crt和yourdomain.com.key文件后捎琐,可以將它們放入如下目錄/root/cert/(我將放在/data/cert目錄下):
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/
- 為Harbor生成配置文件:
sudo ./prepare
- 最后重啟Harbor:
docker-compose up -d
四、總結(jié)
重啟之后發(fā)現(xiàn)報(bào)錯(cuò):
image.png
原因:由于原來采用http方式連接因此在docker.service文件中加入了允許不安全連接裹匙,將其去掉瑞凑。
#vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.6.113
#去掉--insecure-registry這個(gè)參數(shù)即可。
#重啟docker:
#systemctl daemon-reload
#systemctl restart docker.service
再次啟動(dòng)登錄測試
docker login xxx.com
image.png
通過將證書復(fù)制到docker自有的目錄下并重啟Harbor和docker即可登錄
` sudo cp xxx.crt /etc/docker/cert.d/xxxx(你的注冊地址如不存在創(chuàng)建即可)/
- 將證書加入系統(tǒng)級別信任
在 Red Hat (CentOS etc) 上, 命令如下:
cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/reg.yourdomain.com.crt
update-ca-trust
在加入了根證書后用瀏覽器訪問出現(xiàn)證書錯(cuò)誤概页,于是用腳本再次生成新的證書并導(dǎo)入依舊證書錯(cuò)誤籽御,終于在harbor.cfg中找到了原因(沒有仔細(xì)查看配置說明,走了好多彎路)惰匙,配置文件中標(biāo)注了如果使用自簽名將核實(shí)遠(yuǎn)程證書設(shè)為off
image.png
這里默認(rèn)為on技掏,我用的是自簽證書應(yīng)該為off,到此瀏覽器可以正常訪問了
簽名證書也可使用腳本生成這里搬運(yùn)了github上的腳本 openssl簽名生生腳本