步骤
参考官方文档:https://goharbor.io/docs/2.8.0/install-config/configure-https/
生成 CA 证书
生成 CA 证书私钥
openssl genrsa -out ca.key 4096
生成 CA 证书
替换域名为harbor的域名
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.harbor.com" -key ca.key -out ca.crt
生成服务器证书
生成私钥
openssl genrsa -out harbor.harbor.com.key 4096
生成证书签名请求 (CSR)
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.harbor.com" -key harbor.harbor.com.key -out harbor.harbor.com.csr
生成 x509 v3 扩展文件
无论使用 FQDN 还是 IP 地址连接到 Harbor 主机,都必须创建此文件,以便可以为 Harbor 主机生成符合使用者备用名称 (SAN) 和 x509 v3 扩展要求的证书。替换 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=harbor.harbor.com
DNS.2=harbor.harbor
DNS.3=hostname
EOF
生成证书
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in harbor.harbor.com.csr -out harbor.harbor.com.crt
为 Harbor 和 Docker 提供证书
生成证书后,必须提供给 Harbor 和 Docker,并重新配置 Harbor 才能使用。
将服务器证书和密钥复制到 Harbor 主机上的证书文件夹中。
mkdir /data/cert/
cp harbor.harbor.com.crt /data/cert/
cp harbor.harbor.com.key /data/cert/
转换 harbor.harbor.com.crt 为 harbor.harbor.com.cert ,以供 Docker 使用。
openssl x509 -inform PEM -in harbor.harbor.com.crt -out harbor.harbor.com.cert
docker会把 .crt 文件当作 CA 证书,将 .cert 文件当作客户端证书。
将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。
mkdir /etc/docker/certs.d/harbor.harbor.com
cp harbor.harbor.com.cert /etc/docker/certs.d/harbor.harbor.com/
cp harbor.harbor.com.key /etc/docker/certs.d/harbor.harbor.com/
cp ca.crt /etc/docker/certs.d/harbor.harbor.com/
如果不用默认的443端口,需要创建/etc/docker/certs.d/harbor.harbor.com:port
目录
重新配置 harbor
如果已经部署了harbor,需要从http改为https,需要重新prepare。
./prepare
docker-compose down -v
vim harbor.yml
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/cert/harbor.harbor.com.crt
private_key: /data/cert/harbor.harbor.com.key
docker-compose up -d
验证
本地添加hosts:
harbor_ip harbor.harbor.com
打开浏览器,然后输入https://harbor.harbor.com
正常访问。
如果想导入证书,以chrome浏览器导入证书为例,搜索栏输入以下内容,下拉选择管理证书,选择受信任的证书颁发机构,然后导入ca.crt重启浏览器使用域名访问即可。
chrome://settings/security