背景:本文使用环境是Centos 7.9 安装Docker 26.1.4 版本,安装Harbor 2.10.2版本,harbor 默认使用http协议,如果使用https协议需要生成证书 。
1、修改host(172.30.10.48 修改为你自己harbor本机的ip
yourdomain.com 修改成你自己想要配置的域名 )
echo "172.30.10.48 yourdomain.com" >> /etc/hosts
2、生成ca私钥
cd /usr/local/docker/harbor/harbor #进入到harbor安装目录 生成密钥
openssl genrsa -out ca.key 4096 #生成ca 密钥
3、继续生成(域名修改为自己制定的)
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key ca.key \
-out ca.crt
4、生成一个服务器私钥(域名改成自己上面改的)
openssl genrsa -out yourdomain.com.key 4096
5、继续生成(域名改成自己上面改的)
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key yourdomain.com.key \
-out yourdomain.com.csr
6、生成X509 v3的密钥文件(域名改成自己上面改的)
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF
7、使用v3.ext文件生成你harbor主机密钥(域名改成自己上面改的)
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in yourdomain.com.csr \
-out yourdomain.com.crt
8、创建 /data/cert目录为了给harbor.yml使用
mkdir -p /data/cert/
9、执行复制命令,将证书复制到/data/cert下(域名改成自己上面改的)
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/
10、为docker生成对应的证书给它使用(域名改成自己上面改的)
openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
11、在docker所在机器创建对应目录(域名改成自己上面改的)
mkdir -p /etc/docker/certs.d/yourdomain.com/
12、复制证书到目录下
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/
13、配置harbor.yml(按照如下修改,改成你自己的证书)
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/cert/yourdomain.com.crt
private_key: /data/cert/yourdomain.com.crt
注意,yml文件有严格的配置文件缩写,注意配置文件缩写 可使用下面网站去检测yml配置文件格式是否正确
YAML Validator Online to validate YAML data (codebeautify.org)
14、重启docker
systemctl restart docker
15、返回harbor目录下,重新检测部署安装
./prepare #检测harbor.yml配置文件
./install.sh #安装harbor 通过docker-compose 重新安装harbor;只是重新生成harbor容器数据还在
如果./prepare 自检出现错误;
1、检查写入或更改配置文件的格式缩写;
2、检查certificate private_key 密钥存放路径是否正确
16、验证harbor https协议配置情况
https://172.30.10.48 或者 https://yourdomain.com 可以访问harbor 管理页面 ,如果使用https://yourdomain.com 登录,需要dns添加主机域名信息;