0
点赞
收藏
分享

微信扫一扫

harbor证书过期处理方法

报错信息:
x509: certificate has expired or is not yet valid

环境准备
需要安装Docker、Docker-compose(编排工具)

Docker
Linux系统安装Docker
使用安装脚本安装

从get.docker.com下载安装脚本

curl -fsSL get.docker.com -o get-docker.sh
-o:在当前目录下生成一个get-docker.sh文件

执行安装脚本(脚本里面需要一些sudo的权限)

sh get-docker.sh
查看是否安装成功
docker version
启动docker server

systemctl start docker

启动docker server后即会看到Server也出现了

docker version
Docker-compose
​ Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

是一个工具
可以批量管理多个容器
官方文档
官方安装文档

安装方式一:apk安装

apk add docker-compose

安装方式二:下载二进制文件安装

apline需要一下依赖包

apk add py-pip python3-dev libffi-dev openssl-dev gcc libc-dev rust cargo make

运行以下命令下载当前稳定版本,不同版本的Compose请替换1.29.2

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

卸载docker-compose

rm /usr/local/bin/docker-compose

启动docker-compose(这里先不用启动)

docker-compose up -d

查看docker-compose状态

docker-compose ps
安装
三种安装方式:

在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小

离线安装:安装包包含部署的相关镜像,因此安装包比较大

OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

在线安装
离线安装
这里用的版本有点老。

查看更多版本

wget https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-offline-installer-v1.5.1.tgz

tar zxvf harbor-offline-installer-v1.5.1.tgz
cd harbor

配置hostname = 10.193.2.5 # 默认80端口

配置ui_url_protocol = http

配置harbor_admin_password = 123456

vi harbor.cfg

预生成配置文件

./prepare

安装

./install.sh
更改端口
不需要则不用改,这里我们改为8001端口。

因为默认是使用http访问,所以我们要修改80端口。

如果后面配置了证书使用https,就需要修改443端口了。

cd harbor

更改端口

vi harbor.cfg

配置hostname = 10.193.2.5:8001 # 默认80端口

找到proxy下的ports

vi docker-compose.yml
docker-compose.yml文件:

启动
如果已经启动,我们改了端口,则还可以使用此命令启动。

启动docker-compose

docker-compose up -d

Tips:
报错:ERROR:
Can’t find a suitable configuration file in this directory or any
parent. Are you in the right directory?

​ Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml
​ 可以跳转到harbor中进行执行就不会报错了。

查看状态

查看docker-compose状态

docker-compose ps

使用
直接在浏览器中访问配置hostname的地址

用户是admin
初始密码默认为Harbor12345

推送镜像
push镜像步骤:login–>tag–>push

docker 登录

docker login 10.193.2.5:8001

本地镜像打tag(

docker tag mysql:5.7 10.193.2.5:8001/library/mysql:5.7

将镜像push到harbor中

docker push 10.193.2.5:8001/library/mysql:5.7
删除

移除Harbor服务容器

docker-compose down -v
1
2
配置harbor的https访问证书
生成CA证书
随便搞个什么文件夹,用于存放生成的证书。

mkdir /opt/myCerts
cd /opt/myCerts/

  1. 生成自签名
    安全模式,即使用 https 签名方式访问,这样更加安全。 签名分 CA 机构购买或免费自签名 本文采用:生成自签名
    自签名的域名,假定域名为:harbor.my
    生成目录:mkdir -p ~/cert
    3.1. 生成证书颁发机构证书
    生成CA证书私钥
    openssl genrsa -out ca.key 4096
    生成CA证书,10年有效期,也可以设置更长时间,将 3650 改成 36500,即 100 年
    注意 harbor.me 修改自已定义的域名
    openssl req -x509 -new -nodes -sha512 -days 3650 \
    -subj "/C=CN/L=Shenzhen/O=ZRF/CN=harbor.my" \
    -key ca.key \
    -out ca.crt
    3.2. 生成服务器证书
    生成私钥
    openssl genrsa -out harbor.my.key 4096
    生成证书签名请求(CSR)
    注意 harbor.me 修改自已定义的域名
    openssl req -sha512 -new \
    -subj "/C=CN/L=Shenzhen/O=ZRF/CN=harbor.my" \
    -key harbor.my.key \
    -out harbor.my.csr
    生成x509 v3扩展文件
    注意 harbor.me 修改自已定义的域名
    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.my
EOF
使用 v3.ext 文件为您的 Harbor 主机生成证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.my.csr \
-out harbor.my.crt
全部证书列表,目录:~/cert

3.5. Docker 客户端使用证书
将 crt 转换为 cert ,以供客户端的 Docker 使用
cd ~/cert/
openssl x509 -inform PEM -in harbor.my.crt -out harbor.my.cert
将 cert 和 key 文件复制到 Docker 配置目录下的 certs.d

找到自己的 Docker 配置目录。
mkdir -p /etc/docker/certs.d/harbor.my/
cp harbor.my.cert /etc/docker/certs.d/harbor.my/
cp harbor.my.key /etc/docker/certs.d/harbor.my/
cp ca.crt /etc/docker/certs.d/harbor.my/

查看证书到期时间

openssl x509 -in harbor.my.crt -noout -text

到目前为止所有需要的证书文件就生成完毕了,下面需要一些配置。

[root@harbor-vm myCerts]# ll
总用量 28
-rw-r--r--. 1 root root 1789 3月 8 07:53 ca.crt
-rw-r--r--. 1 root root 3243 3月 8 07:50 ca.key
-rw-r--r--. 1 root root 17 3月 8 08:15 ca.srl
-rw-r--r--. 1 root root 1818 3月 8 08:15 server.crt
-rw-r--r--. 1 root root 1586 3月 8 07:55 server.csr
-rw-r--r--. 1 root root 3243 3月 8 07:54 server.key
-rw-r--r--. 1 root root 228 3月 8 08:14 v3.ext
[root@harbor-vm myCerts]#
配置和安装证书
配置harbor
cd harbor/

复制一份cfg配置文件,以防出错

cp harbor.cfg harbor.cfg.tmpl

修改harbor的配置文件,修改以下配置项

hostname = www.harbor.my:4431

ui_url_protocol = https

ssl_cert = /opt/myCerts/server.crt

ssl_cert_key = /opt/myCerts/server.key

Tips:官方文档让配置harbor.yml文件,但是我没有这个文件,具体原因不详,但是灵机一动发现修改harbor.cfg文件也可以实现。

重启以下harbor仓库

cd harbor/

导入配置

./prepare

移除Harbor服务容器,不会影响docker-compose.yml文件

docker-compose down -v

后台运行的harbor

docker-compose up -d
配置docker

不存在请mkdir创建,该目录为docker默认的固定存放证书的目录

cd /etc/docker/certs.d/

如果将默认nginx端口443映射到不同的端口,请创建文件夹时写上端口号

mkdir -p /etc/docker/certs.d/harbor.my:4431

cd /opt/myCerts
cp server.crt /etc/docker/certs.d/harbor.my:4431/server.crt

首次自签发证书为一年,过期了需要更新需谨记一下命令。
docker-compose down
cd /root/harbor
./prepare ## 过期替换证书要重新执行prepare 否则只重启替换证书不生效 客户端仍然报证书过期
docker-compose up -d

docker-comepose命令
$ docker-compose stop # 停止
$ docker-compose start # 启动(第一次需要使用 up -d)
$ docker-compose down # 停止并删除容器(慎用)
$ docker-compose up -d # 创建并启动
$ docker-compose restart proxy 重启nginx

举报

相关推荐

0 条评论