部署harbor并实现https(SAN签发证书)

时间:2022-10-25 07:22:09

harbor介绍

  Harbor 是由 VMware 公司开源的企业级的 Docker Registry 管理项目,它包括权限管理 (RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。官网地址 Harbor (goharbor.io)​

安装依赖

harbor依赖于docker 和docker-compose

需求先安装docker和docker-compose

1、安装docker

使用yum安装docker

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl start docker
systemctl enable docker

部署harbor并实现https(SAN签发证书)

2、安装docker-compose

下载docker-compose 

​wget ​​https://github.com/docker/compose/releases/download/v2.12.1/docker-compose-linux-x86_64​

[root@harbor ~]# cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose

[root@harbor ~]# chmod +x /usr/local/bin/docker-compose


部署harbor并实现https(SAN签发证书)

3、下载harbor

harbor下载地址:​​Releases · goharbor/harbor (github.com)​

解压harbor

tar -xvf harbor-offline-installer-v2.6.1.tgz -C /usr/local/harbor

部署harbor并实现https(SAN签发证书)

自签证书

官方自签名证书说明:

​​​Harbor docs | Configure HTTPS Access to Harbor (goharbor.io)​

  如果使用containerd部署容器使用harbor则需要参考官网说明,与传统docker部署的Harbor自签发 SSL证书不同需要使用SAN包含多域名签发对象:

部署harbor并实现https(SAN签发证书)

1、创建自签发证书

创建目录

​mkdir /usr/local/harbor/certs

cd certs/

创建私钥

openssl genrsa -out ca.key 4096

使用私钥创建自签CA证书

openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Hanan/L=Zhengzhou/O=cib/OU=it/CN=cib.com.cn" \
-key ca.key \
-out ca.crt

C,Country,代表国家

ST,STate,代表省份

L,Location,代表城市

O,Organization,代表组织,公司

OU,Organization Unit,代表部门

CN,Common Name,代表服务器域名

emailAddress,代表联系人邮箱地址。

客户端私钥证书生成

openssl genrsa -out cib.com.cn.key 4096

openssl req -sha512 -new \
-subj "/C=CN/ST=Hanan/L=Zhengzhou/O=cib/OU=it/CN=cib.com.cn" \
-key cib.com.cn.key \
-out cib.com.cn.csr

​生成多个域名请求

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=cib.com.cn
DNS.2=harbor.cib.com.cn
DNS.3=harbor.cib.local
EOF

​使用自签名CA签发证书

openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in cib.com.cn.csr \
-out cib.com.cn.crt

修改域名和https SSL签发的私钥和证书路径

将模板文件复制一份新的yml

cp harbor.yml.tmpl harbor.yml

修改yml文件

vim harbor.yml

必须修改几个项目

1、证书地址

2、hostname

3、data路径

4、登录密码

  port: 443
# The path of cert and key files for nginx
certificate: /usr/local/harbor/certs/cib.com.cn.crt
private_key: /usr/local/harbor/certs/cib.com.cn.key

harbor_admin_password: admin123

data_volume: /data

hostname: harbor.cib.com.cn

部署harbor并实现https(SAN签发证书)

部署harbor并实现https(SAN签发证书)

部署harbor并实现https(SAN签发证书)

建立Harbor数据目录,并使用数据盘挂载到/data目录


root@Harbor:/usr/local/harbor# mkdir /data

部署harbor

root@Harbor:/usr/local/harbor# ./install.sh --help

#--with-trivy  开启trivy扫描

root@Harbor:/usr/local/harbor# ./install.sh --with-trivy --with-chartmuseum

部署harbor并实现https(SAN签发证书)

报错处理:

1、prepare base dir is set to /usr/local/harbor

Error happened in config validation...

ERROR:root:Please specify hostname

yml文件未设置hostname

2、Error happened in config validation...

ERROR:root:Error: The protocol is https but attribute ssl_cert is not set

yml未配置证书。

安装完成截图:

部署harbor并实现https(SAN签发证书)

查看端口:

部署harbor并实现https(SAN签发证书)

网站登录

部署harbor并实现https(SAN签发证书)

部署harbor并实现https(SAN签发证书)

登录harbor

部署harbor并实现https(SAN签发证书)

新建一个新的公开目录

部署harbor并实现https(SAN签发证书)

docker客户端配置

docker 客户端配置证书验证,并推送镜像到Harbor

#docker客户端创建证书保留位置

root@ubuntu20:~# mkdir /etc/docker/certs.d/​harbor.cib.com.cn​ -p

#Harbor将证书发送给客户端

​[root@localhost certs]# scp cib.com.cn.crt 192.168.28.171:/etc/docker/certs.d/harbor.cib.com.cn/

#docker客户端配置hosts域名解析Harbor

部署harbor并实现https(SAN签发证书)

使用docker登录harbor

部署harbor并实现https(SAN签发证书)

镜像管理

docker 对对镜像打标签

docker tag tomcat-base:v8.5.82 ​​harbor.cib.com.cn/web/tomcat-base:v8.5.82

本地镜像

部署harbor并实现https(SAN签发证书)

推送镜像

docker push harbor.cib.com.cn/web/tomcat-base:v8.5.82

部署harbor并实现https(SAN签发证书)

harbor服务器情况

部署harbor并实现https(SAN签发证书)

使用另外一台node登录harbor

拉取镜像

部署harbor并实现https(SAN签发证书)