建议参考github搭建 https://github.com/goharbor/harbor-helm

Docker--------Harbor registry安全认证搭建 [ Https ]

wget http://harbor.orientsoft.cn/harbor-v1.3.0-rc4/harbor-offline-installer-v1.3.0-rc4.tgz
harbor-offline-installer-v1.3.0-rc4.tgz

Harbor的架构
Harbor系列_第1张图片

主要组件包括proxy,他是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图中通过深蓝色先标识;ui提供了一个web管理页面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过hook通知ui创建repository,上图通过红色线标识,当然registry的token认证也是通过ui组件完成;adminserver是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置,通过灰色线标识;jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log,上图通过紫色线标识;log是日志汇总组件,通过docker的log-driver把日志汇总到一起,通过浅蓝色线条标识。

1.证书生成

[root@master cert]# pwd
/data/cert
[root@master cert]# ls
hh.registry.com.crt hh.registry.com.csr hh.registry.com.key hh.srl server.crt server.csr server.key server.srl

带域名参考
[root@harbor cert]# openssl req -newkey rsa:4096 \
-nodes -sha256 -keyout ca.key -x509 -days 365 \
-out ca.crt -subj "/C=CN/L=wuhan/O=lisea/CN=harbor-registry"

https://blog.51cto.com/lisea/1936839

Harbor系列_第2张图片

mkdir -p /data/cert && cd /data/cert
#创建自己的CA证书(不使用第三方权威机构的CA来认证,自己充当CA的角色)
openssl genrsa -out ca.key 2048 # 生成根证书私钥(无加密)
#生成自签名证书(使用已有私钥ca.key自行签发根证书)
openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj “/CN=Harbor-ca”

req  产生证书签发申请命令
-x509 签发X.509格式证书命令。X.509是最通用的一种签名证书格式。
-new  生成证书请求
-key  指定私钥文件
-nodes 表示私钥不加密
-out   输出
-subj 指定用户信息
-days 有效期

创建服务器端证书
#生成服务器端私钥和CSR签名请求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr    # 一路回车
#签发服务器证书
echo subjectAltName = IP:192.168.80.42 > extfile.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -extfile extfile.cnf -out server.crt

x509  签发X.509格式证书命令。
-req   表示证书输入请求。
-days  表示有效天数
-extensions 表示按OpenSSL配置文件v3_req项添加扩展。
-CA   表示CA证书,这里为ca.crt
-CAkey  表示CA证书密钥,这里为ca.key
-CAcreateserial 表示创建CA证书序列号
-extfile  指定文件

node不确定是否要这样做
将 ca 根证书依次复制到上述创建的目录中
cp ca.crt /etc/docker/certs.d/192.168.80.42
cp server.crt /etc/docker/certs.d/192.168.80.42

2.启动

docker-compose start /down

docker login -u test -p Harbor12345 hh.registry.com
docker push hh.registry.com/test/nginx:v1.0.1
docker rmi hh.registry.com/test/nginx:v1.0.1
docker pull hh.registry.com/test/nginx:v1.0.1

3.Harbor WEB的使用

https://www.cnblogs.com/huangjc/p/6270405.html?utm_source=itdadao&utm_medium=referral

注意事项

cat /etc/pki/tls/openssl.cnf
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
subjectAltName = IP:172.1.1.131

更新
harbor
ansible_ssh_host=192.168.1.106 ansible_ssh_user=root
ansible_ssh_host=192.168.1.107 ansible_ssh_user=root
ansible_ssh_host=192.168.1.108 ansible_ssh_user=root

harbor安装
systemctl stop firewalld.service
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce-18.06.1.ce-3.el7 -y
#yum list docker-ce --showduplicates|sort -r
systemctl start docker
systemctl enable docker
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
docker-compose --version
mkdir -p /opt/soft
cd /opt/soft
wget http://harbor.orientsoft.cn/harbor-v1.3.0-rc4/harbor-offline-installer-v1.3.0-rc4.tgz
tar -zxf harbor-offline-installer-v1.3.0-rc4.tgz

IP=ifconfig|grep inet|head -1|awk '{print $2}'
sed -i 's/mydomain.com/registry.com/g' harbor.cfg
sed -i 's/hostname = reg.registry.com/hostname = hh.registry.com/g' harbor.cfg
sed -i 's/http/https/g' harbor.cfg

hostname = hh.registry.com # 指定私有仓库的主机名,可以是IP地址,也可以是域名
ui_url_protocol = https # 用户访问私仓时使用的协议,默认时http,配置成https
db_password = root123   # 指定mysql数据库管理员密码
harbor_admin_password:Harbor12345 # harbor的管理员账户密码
ssl_cert = /data/cert/hh.registry.com.crt   # 设置证书文件路径
ssl_cert_key = /data/cert/hh.registry.com.key # 设置证书密钥文件路径

mkdir -p /data/cert
cd /data/cert/
localdomain=hh.registry.com
openssl req -nodes -subj "/C=CN/ST=GuangDong/L=ShenZhen/CN=$localdomain" -newkey rsa:2048 -keyout $localdomain.key -out $localdomain.csr
openssl x509 -req -days 3650 -in $localdomain.csr -signkey $localdomain.key -out $localdomain.crt

openssl x509 -req -in $localdomain.csr -CA $localdomain.crt -CAkey $localdomain.key -CAcreateserial -out $localdomain.crt -days 10000

docker login -u test -p Harbor12345 hh.registry.com

#x509: certificate signed by unknown authority
cat /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry hh.registry.com

Harbor系列_第3张图片