CentOS7 Harbor Https 配置

之前以http搭建了一个harbor作为测试玩乐,这次正式使用harbor作为生产环境,将之前的harbor更改为https。

一、修改配置文件

  • 执行以下命令停止Harbor
    sudo docker-compose down -v
  • 修改配置文件
    sudo vim harbor.cfg
CentOS7 Harbor Https 配置_第1张图片
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方式生成注册表主机的证书
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

四、总结

重启之后发现报错:

image.png

原因:由于原来采用http方式连接因此在docker.service文件中加入了允许不安全连接,将其去掉。

#vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.6.113
#去掉--insecure-registry这个参数即可。

#重启docker:
#systemctl daemon-reload
#systemctl restart docker.service

再次启动登录测试

docker login xxx.com
image.png

通过将证书复制到docker自有的目录下并重启Harbor和docker即可登录
` sudo cp xxx.crt /etc/docker/cert.d/xxxx(你的注册地址如不存在创建即可)/

  • 将证书加入系统级别信任
在 Red Hat (CentOS etc) 上, 命令如下:
cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/reg.yourdomain.com.crt
update-ca-trust

在加入了根证书后用浏览器访问出现证书错误,于是用脚本再次生成新的证书并导入依旧证书错误,终于在harbor.cfg中找到了原因(没有仔细查看配置说明,走了好多弯路),配置文件中标注了如果使用自签名将核实远程证书设为off

image.png

这里默认为on,我用的是自签证书应该为off,到此浏览器可以正常访问了
签名证书也可使用脚本生成这里搬运了github上的脚本 openssl签名生生脚本

你可能感兴趣的:(CentOS7 Harbor Https 配置)