Harbor部署并启用Https

发布时间 2023-06-21 00:06:09作者: 文十七

下载安装包

在 https://github.com/goharbor/harbor/releases 下载需要的在线或离线安装包

  • 下载安装包
# 以离线安装包为例
wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
  • 解压
tar -zxvf harbor-offline-installer-v2.8.2.tgz
harbor/harbor.v2.8.2.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl

 启用HTTPS

要配置HTTPS,必须创建SSL证书。可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。本节介绍如何使用OpenSSL创建CA以及如何使用CA签署服务器证书和客户端证书。也可以使用其他CA提供商。

生成证书颁发机构证书

在生产环境中,应该从 CA 获得证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令

  • 生成 CA 证书私钥
openssl genrsa -out ca.key 4096
  • 生成 CA 证书
# 调整 -subj 选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为通用名称 (CN) 属性
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=testharbor.com" \
 -key ca.key \
 -out ca.crt

生成服务器证书

证书通常包含一个.crt文件和一个.key文件,例如testharbor.com.crt和testharbor.com.key

  • 生成私钥
openssl genrsa -out testharbor.com.key 4096
  • 生成证书签名请求 (CSR)
# 调整 -subj 选项中的值以反映组织信息。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为通用名称 (CN) 属性,并在密钥和 CSR 文件名中使用它。
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=testharbor.com" \
    -key testharbor.com.key \
    -out testharbor.com.csr
  • Generate an x509 v3 extension file
# 无论是使用完全限定域名(FQDN)还是IP地址连接到Harbor主机,都必须创建此文件,以便可以生成符合主题备用名称(SAN)和x509 v3扩展要求的Harbor主机证书。请替换DNS条目以反映您的域名。
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=testharbor.com
DNS.
2=testharbor
EOF

  • 使用 v3.ext 文件为您的 Harbor 主机生成证书
# 将 CRS 和 CRT 文件名中的 testharbor.com 替换为 Harbor 主机名
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in testharbor.com.csr \
    -out testharbor.com.crt

向 Harbor 和 Docker 提供证书

生成 ca.crt、testharbor.com.crt 和 testharbor.com.key 文件后,您必须将它们提供给 Harbor 和 Docker,并重新配置 Harbor 以使用它们

  • 将服务器证书和密钥复制到 Harbor 主机上的证书文件夹中
cp testharbor.com.crt /data/cert/
cp testharbor.com.key /data/cert/
  • 将 testharbor.com.crt 转换为 testharbor.com.cert,供 Docker 使用
# Docker 守护进程将 .crt 文件解释为 CA 证书,将 .cert 文件解释为客户端证书
openssl x509 -inform PEM -in testharbor.com.crt -out testharbor.com.cert
  • 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。必须先创建适当的文件夹
cp testharbor.com.cert /etc/docker/certs.d/testharbor.com/
cp testharbor.com.key /etc/docker/certs.d/testharbor.com/
cp ca.crt /etc/docker/certs.d/testharbor.com/
# 如果将默认 nginx 端口 443 映射到其他端口,请创建文件夹 /etc/docker/certs.d/testharbor.com:port 或 /etc/docker/certs.d/harbor_IP:port
  • 重启Docker
systemctl restart docker

部署Harbor

  • 运行脚本 prepare 以启用 HTTPS
./prepare
  • 运行脚本 install.sh 以安装Harbor
./instal.sh