Harbor 安全 Https 配置
Harbor 安全 Https 配置
1. 安装 docker
下载地址 docker-ce 安装教程阿里巴巴开源镜像站:
https://developer.aliyun.com/mirror/docker-ce
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Step 3: 写入软件源信息
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
docker 镜像加速配置
[root@Ubuntu2204 ~]#vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.daocloud.io"
]
}
[root@Ubuntu2204 ~]#systemctl daemon-reload
[root@Ubuntu2204 ~]#systemctl restart docker
2. 安装 docker compose
离线安装,直接从 github 或国内镜像站下载安装对应版本,如果下载速度慢的话可以使用迅雷,或者用魔法。
下载地址: https://github.com/docker/compose/releases
https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64
# 下载好系统对应的版本 以 Ubuntu 为例 docker-compose-linux-x86_64 并上传到 /root 目录
[root@Ubuntu2204 ~]#pwd
/root
[root@Ubuntu2204 ~]#ls
docker-compose-linux-x86_64
[root@Ubuntu2204 ~]#mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@Ubuntu2204 ~]#chmod +x /usr/local/bin/docker-compose
3. 安装 harbor
下载地址: https://github.com/goharbor/harbor/releases
**注意:**docker compose 必须先于 harbor 安装,否则会报错误
先查看一下 docker 、docker compose 版本,确保符合 harbor 要求,查看 harbor 版本的 readme 文档可以知道需要的 docker 、docker compose 版本
# 下载离线完整安装包,推荐使用,下载好上传到 /root 目录
[root@Ubuntu2204 ~]#pwd
/root
[root@Ubuntu2204 ~]#ls
harbor-offline-installer-v2.12.2.tgz
# 解压缩离线包
[root@Ubuntu2204 ~]#mkdir /apps
[root@Ubuntu2204 ~]#tar -xvf harbor-offline-installer-v2.12.2.tgz -C /apps/
[root@Ubuntu2204 ~]#mv /apps/harbor/harbor.yml.tmpl /apps/harbor/harbor.yml
[root@Ubuntu2204 ~]#vim /apps/harbor/harbor.yml
hostname: harbor.munan.com # 修改此行,指向当前主机 IP 或 FQDN
harbor_admin_password: 123456 # 修改此行指定 harbor 登录用户 admin 的密码
4. harbor 安全 https 配置
基于安全考虑,生产建议采用 https 代替 http
官方文档:https://goharbor.io/docs/2.12.0/install-config/configure-https/
4.1 生成 Harbor 服务器证书
# 创建证书相关数据的目录
[root@Ubuntu2204 ~]#mkdir -p /data/harbor/certs
[root@Ubuntu2204 ~]#cd /data/harbor/certs/
# 生成 ca 的私钥
[root@Ubuntu2204 certs]#openssl genrsa -out ca.key 4096
# 生成 ca 的自签名证书
[root@Ubuntu2204 certs]#openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=NanJing/L=NanJing/O=example/OU=Personal/CN=ca.munan.com" -key ca.key -out ca.crt
# 生成 harbor 主机的私钥
[root@Ubuntu2204 certs]#openssl genrsa -out harbor.munan.com.key 4096
# 生成 harbor 主机的证书申请
[root@Ubuntu2204 certs]#openssl req -sha512 -new -subj "/C=CN/ST=NanJing/L=NanJing/O=example/OU=Personal/CN=harbor.munan.com" -key harbor.munan.com.key -out harbor.munan.com.csr
# 创建 x509 v3 扩展文件(新版新增加的要求)
[root@Ubuntu2204 certs]#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.munan.com # 此处必须和 harbor 的网站名称一致
DNS.2=munan # 可选
DNS.3=munan.com # 可选
EOF
# 给 harbor 主机颁发证书
[root@Ubuntu2204 certs]#openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in harbor.munan.com.csr -out harbor.munan.com.crt
# 生成的文件
[root@Ubuntu2204 certs]#ls
ca.crt ca.key harbor.munan.com.crt harbor.munan.com.csr harbor.munan.com.key v3.ext
4.2 配置 Harbor 服务器使用证书
[root@Ubuntu2204 ~]#vim /apps/harbor/harbor.yml
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/harbor/certs/harbor.munan.com.crt
private_key: /data/harbor/certs/harbor.munan.com.key
# enable strong ssl ciphers (default: false)
# strong_ssl_ciphers: false
# 运行 harbor 安装脚本
[root@Ubuntu2204 ~]#/apps/harbor/install.sh
注意: 如果配置文件更改需要执行下面操作
[root@Ubuntu2204 ~]#cd /apps/harbor/
[root@Ubuntu2204 harbor]#./prepare
[root@Ubuntu2204 harbor]#docker-compose down -v
[root@Ubuntu2204 harbor]#docker-compose up -d
注意:hostname: harbor.anan.com 此行必须是网站的域名,而且 harbor 主机的 /etc/hosts可以不解析此域名,不能是 IP 地址,否则登录时会报如下错误
5. 用 https 方式访问 harbor 网站
修改 Windows 电脑 /etc/hosts 文件
10.0.0.88 harbor.munan.com
打开浏览器,访问 https://harbor.munan.com/ ,可以看到 Web 界面
输入用户:admin 密码:123456 登录
在 harbor 网站新建项目
Web界面 – 项目 – 新建项目
6. 实现开机自动启动 harbor
[root@Ubuntu2204 ~]#vim /lib/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f /apps/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /apps/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
[root@Ubuntu2204 ~]#systemctl daemon-reload; systemctl enable harbor
[root@Ubuntu2204 ~]#systemctl restart harbor.service
7. 客户端配置
重新找一台装有 docker 的虚拟机当作客户端
7.1 在客户端下载 CA 的证书
先做一下本地名称解析
[root@Ubuntu2204 ~]#vim /etc/hosts
10.0.0.88 harbor.munan.com
没有证书验证,直接登录失败
[root@Ubuntu2204 ~]#docker login harbor.munan.com
Username: admin
Password:
Error response from daemon: Get "https://harbor.munan.com/v2/": x509: certificate signed by unknown authority
在客户端下载 ca 的证书
[root@Ubuntu2204 ~]#mkdir -p /etc/docker/certs.d/harbor.munan.com/
[root@Ubuntu2204 ~]#scp -r harbor.munan.com:/data/harbor/certs/ca.crt /etc/docker/certs.d/harbor.munan.com/
验证可以登录成功,可以上传和下载镜像了
上传镜像一台机器测试,下载镜像一台机器测试,下载镜像的机器也需要下载 ca 证书
[root@Ubuntu2204 ~]#docker login harbor.munan.com
docker login harbor.munan.com
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
gin harbor.munan.com
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded