为了通过 HTTPS 访问和登录配置了 HTTPS 的 Harbor 仓库,需要满足以下条件:
- Harbor 服务器的 TLS 证书:
- 确保 Harbor 服务器配置了有效的 TLS 证书,该证书应该包含 Harbor 服务器的域名或 IP 地址。
这里的证书是ca请求文件里的hsots字段配置
- 如果使用自签名证书,需要将自签名证书添加到 Docker 客户端的信任链中。
- Harbor 服务器的域名/IP 地址配置:
- 确保访问 Harbor 服务器时使用的域名或 IP 地址与证书中的域名或 IP 地址匹配。
-
Docker 客户端配置:
-
如果使用自签名证书,需要将该证书添加到 Docker 客户端的信任链。可以将证书拷贝到 Docker 客户端的
/etc/docker/certs.d/<harbor_domain_or_ip>/
目录下(需创建该目录)。记住这个harbor_domain_or_ip是和你配置harbor服务的hostname一致
-
如果使用的是自签名证书,还需要在 Docker 客户端的配置中将 Harbor 服务器的地址加入到
insecure-registries
中。
-
具体步骤如下:
1. 生成或获取 TLS 证书
注意:如果部署harbor时对应的证书已经配置好了,那么这步跳过
确保你已经为 Harbor 服务器生成了有效的 TLS 证书。如果是自签名证书,可以按照以下步骤生成:
openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.key -x509 -days 365 -out harbor.crt -subj "/CN=your_harbor_domain_or_ip"
2. 配置 Harbor 使用 TLS 证书
注意:如果部署harbor时对应的证书已经配置好了,那么这步跳过
将生成的 harbor.key
和 harbor.crt
文件复制到 Harbor 服务器的适当目录,并在 Harbor 配置文件中指定这些证书。例如,在 harbor.yml
文件中配置:
https:
port: 443
certificate: /path/to/harbor.crt
private_key: /path/to/harbor.key
然后重新启动 Harbor 服务:
docker-compose down
docker-compose up -d
3. 将证书添加到 Docker 客户端的信任链
在 Docker 客户端机器上,创建目录并将证书复制到该目录:
sudo mkdir -p /etc/docker/certs.d/your_harbor_domain_or_ip
sudo cp harbor.crt /etc/docker/certs.d/your_harbor_domain_or_ip/ca.crt
4. 配置 Docker 客户端信任自签名证书(如果使用自签名证书)
编辑 Docker 客户端的 daemon.json
文件,添加 insecure-registries
配置:
{
"insecure-registries": ["your_harbor_domain_or_ip:443"]
}
重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
注意:如果harbor相关的容器正在跑,如果直接重启docker可能会导致harbor的core服务起不来,建议先docer-conpose down再重启docker
5. 登录 Harbor 仓库
确保满足上述条件后,可以使用以下命令登录 Harbor 仓库:
docker login your_harbor_domain_or_ip:443
输入用户名和密码进行登录。如果证书配置正确且 Docker 客户端信任该证书,登录应该能够成功。
通过这些步骤,Docker 客户端将能够通过 HTTPS 访问和登录配置了 HTTPS 的 Harbor 仓库。