1. 安装docker-compose
yum -y install docker-compose
docker-compose --version
---1.18
需要进行升级
yum -y remove docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
---1.29.2
2.下载harbor
wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
tar -xvf harbor-offline-installer-v2.5.0.tgz
mv harbor /data/
3. openssl生成签名证书
3.1 生成证书颁发机构证书
在生产环境中,您应该从CA获得证书。在测试或开发环境中,您可以生成自己的CA。
3.1.1 生成CA证书私钥
cd /data/cert
openssl genrsa -out ca.key 4096
3.1.2 生成CA证书
使用IP地址,执行以下操作:
cd /root
openssl rand -writerand .rnd
调整-subj
选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN
)属性
cd -
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=dev/OU=Personal/CN=117.50.177.**" \
-key ca.key \
-out ca.crt
3.2 生成服务器证书
证书通常包含一个.crt
文件和一个.key
文件
3.2.1 生成私钥
openssl genrsa -out 117.50.177.**.key 4096 【使用IP】
3.2.2 生成证书签名请求(CSR)
调整-subj
选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN
)属性,并在密钥和CSR文件名中使用它。
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=dev/OU=Personal/CN=117.50.177.168" \
-key 117.50.177.**.key \
-out 117.50.177.168.csr
3.2.3 生成一个x509 v3扩展文件
为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:117.50.177.**
EOF
如果使用FQDN,则如下生成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=registry.harbor.com
DNS.2=registry.harbor
DNS.3=harbor
EOF
3.2.4 使用该v3.ext文件为您的Harbor主机生成证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in 117.50.177.**.csr \
-out 117.50.177.**.crt
4. 提供证书给Harbor和Docker
生成后ca.crt
,117.50.177.**.crt
和117.50.177.**.key
文件,必须将它们提供给harbor和docker,和重新配置harbor使用它们
4.1 将服务器证书和密钥复制到Harbor主机上的certficates文件夹中,确保在/data/cert,如果在这个目录下生成,则忽略此步骤
4.2 转换117.50.177.**.crt
为117.50.177.**
.cert
,供Docker使用。
openssl x509 -inform PEM -in 117.50.177.168.crt -out 117.50.177.168.cert
4.3 将服务器证书,密钥和CA文件复制到Harbor主机上的Docker证书文件夹中
mkdir -p /etc/docker/certs.d/117.50.177.168/
cp 117.50.177.**
.cert /etc/docker/certs.d/117.50.177.168/
cp 117.50.177.**
.key /etc/docker/certs.d/117.50.177.168/
cp ca.crt /etc/docker/certs.d/117.50.177.168/
4.4 重新启动Docker Engine
systemctl restart docker
5.部署harbor
cd /data/harbor/
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
hostname: 117.50.177.**
http: port: 18089
https:
port: 443
certificate: /data/cert/117.50.177.**.crt
private_key: /data/cert/117.50.177.**.key
harbor_admin_password: *****@2022==
external_redis:
host: 117.50.177.**:6005
./prepare
./install.sh
6.常用管理命令
停止服务: docker-compose stop
开始服务: docker-compose start
重启服务:docker-compose restart
停止服务并删除容器:docker-compose down
启动服务并运行容器:docker-compose up
7. 客户端解决https验证问题
将生成ca.crt根证书sz到本地,chrome导入证书:
设置--隐私设置和安全性--安全--管理证书--将ca.crt导入进来,存入:受信任的根证书颁发机构