前提:
基于 HTTP 协议部署 harbor 仓库-CSDN博客 部署 harbor 仓库
一、 配置 CA 证书
1. 创建工作目录
mkdir -pv /app/tools/harbor/certs/{ca,harbor-server,docker-client}
2. 进入到 harbor 证书存放目录
cd /app/tools/harbor/certs/
[root@harbor /app/tools/harbor/certs]# ll
total 0
drwxr-xr-x 2 root root 6 Apr 21 15:33 ca
drwxr-xr-x 2 root root 6 Apr 21 15:33 docker-client
drwxr-xr-x 2 root root 6 Apr 21 15:33 harbor-server
3. 生成自建 CA 证书
3.1 创建 CA 私钥
openssl genrsa -out ca/ca.key 4096
3.2 基于自建的CA私钥创建CA证书(注意,证书签发的域名范围)
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=bihuang.com" \
-key ca/ca.key \
-out ca/ca.crt
3.3 查看自建证书信息
openssl x509 -in ca/ca.crt -noout -text
二、配置 harbor server 证书
1. 生成 harbor 服务器的私钥
注意:将域名更换为自己的域名
openssl genrsa -out harbor-server/harbor253.bihuang.com.key 4096
#注意更换文件前缀
2. harbor服务器基于私钥签发证书认证请求(csr 文件),让自建CA认证
注意:将域名更换为自己的域名,以及生成文件的前缀名称
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor253.bihuang.com" \
-key harbor-server/harbor253.bihuang.com.key \
-out harbor-server/harbor253.bihuang.com.csr
#注意:CN=harbor253.bihuang.com
3. 生成 x509 v3 的扩展文件用于认证
注意:DNS.1 字段
cat > harbor-server/v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor253.bihuang.com #注意
EOF
4. 基于 x509 v3 的扩展文件认证签发 harbor server 证书
openssl x509 -req -sha512 -days 3650 \
-extfile harbor-server/v3.ext \
-CA ca/ca.crt -CAkey ca/ca.key -CAcreateserial \
-in harbor-server/harbor253.bihuang.com.csr \ #注意
-out harbor-server/harbor253.bihuang.com.crt #注意
5. 修改 harbor 的配置文件使用自建证书
[root@harbor /app/tools/harbor/certs]# pwd
/app/tools/harbor/certs
cd ..
[root@harbor /app/tools/harbor]# vim harbor.yml
hostname: harbor253.bihuang.com #修改域名
http:
port: 80
https:
port: 443
#填写自己生成的文件路径
certificate: /app/tools/harbor/certs/harbor-server/harbor253.bihuang.com.crt
private_key: /app/tools/harbor/certs/harbor-server/harbor253.bihuang.com.key
6. 重启harbor
[root@harbor /app/tools/harbor]# ./prepare
[root@harbor /app/tools/harbor]# docker-compose down -t 1
[root@harbor /app/tools/harbor]# docker-compose up -d
三、配置 docker 客户端证书
1. 生成 docker 客户端证书
[root@harbor /app/tools/harbor]# cd certs/
#基于 harbor253.bihuang.com.crt,生成 harbor253.bihuang.com.cert
[root@harbor /app/tools/harbor/certs]# openssl x509 -inform PEM -in harbor-server/harbor253.bihuang.com.crt -out docker-client/harbor253.bihuang.com.cert
[root@harbor /app/tools/harbor/certs]# pwd
/app/tools/harbor/certs
[root@harbor /app/tools/harbor/certs]# md5sum docker-client/harbor253.bihuang.com.cert harbor-server/harbor253.bihuang.com.crt
99ced105f97a0c7f67201f4e54ee7241 docker-client/harbor253.bihuang.com.cert
99ced105f97a0c7f67201f4e54ee7241 harbor-server/harbor253.bihuang.com.crt
2. 拷贝docker clicent 证书文件
[root@harbor /app/tools/harbor/certs]# cp harbor-server/harbor253.bihuang.com.key docker-client/
[root@harbor /app/tools/harbor/certs]# cp ca/ca.crt docker-client/
[root@harbor /app/tools/harbor/certs]# ll -R
四、docker 客户端使用证书
1. docker 客户端创建自建证书的目录结构(注意域名的名称和目录要一致)
[root@docker01 ~]# mkdir -pv /etc/docker/certs.d/harbor253.bihuang.com/
2. 将客户端证书文件进行拷贝
[root@harbor /app/tools/harbor]# scp certs/docker-client/* 192.168.99.181:/etc/docker/certs.d/harbor253.bihuang.com/
3. docker 客户端验证
[root@docker01 ~]# echo 192.168.99.253 harbor harbor253.bihuang.com >> /etc/hosts
[root@docker01 ~]# docker login -u admin -p Harbor12345 harbor253.bihuang.com
4. web 访问
5. 测试成功后,登出
[root@docker01 ~]# docker logout harbor253.bihuang.com
Removing login credentials for harbor253.bihuang.com