概要描述
TOS CA 证书会在2025年12月7号过期,本文提供一种通过脚本的形式,续签证书的方式。
主要影响tos 2.x的产品,包括:
TDH 5.0 ~ 9.4 (不包含 Manager 9.4.0.0)
详细说明
- 获取更新脚本
- 修改配置文件
- 更新证书
- 手动修改tos的metainfo文件内容
- 检查
检查方式
- 检查检查当前集群TOS证书过期时间
登录集群任意节点,执行下面的命令
openssl x509 -text -in /srv/kubernetes/ca.pem |grep Not

如果显示是 2025/12/7 号过期,则表示受影响。
请按照如下连接的方式完成证书续签。
1. 获取更新脚本并解压
点击下载X86架构CA证书更新工具 ca-renewal-v10.tar.gz
点击下载ARM64架构CA证书更新工具 ca-renewal-v10-arm64.tar.gz
上传到集群的 Manager master 节点上,解压安装包。
如果开启了高可用,则上传到既有 TOS Master 角色,也有 Manager 角色的节点后台。
注意:如果 Manager 的 master 节点不是 Tos Master 节点,需要联系售后技术支持处理。
请参考链接:
TDH Manager 9.4 之前的版本环境下TOS CA证书续签(Manager和TOS-Master不在同一个节点 )
# 解压
tar -zxvf ca-renewal-v10.tar.gz
cd ca-renewal/
# 安装 sshpass
rpm -ivh sshpass-1.06-2.el7.x86_64.rpm
2. 填写集群节点信息
bash gen-hosts.sh

执行此脚本会在 ca-renewal 目录下生成 hosts.txt。
- hosts.txt 中仅包含集群节点的 hostname、ip 及 tos角色;
- hosts.txt 文件不能有多余的空行;
- hosts.txt 文件中内容需要手动补充;
- 第一列:主机名
- 第二列:主机IP
- 第三列:主机角色(master 代表 TOS Master ,worker 代表不是 tos master 的节点。)
- 第四列:ssh 端口;
- 第五列:ssh 登录用户;
- 第六列:ssh 登录密码;
$ cat hosts.txt
gts-131086 172.18.131.86 master 22 root pwd123456
gts-131087 172.18.131.87 master 22 root pwd123456
gts-131088 172.18.131.88 master 22 root pwd123456
gts-131089 172.18.131.89 worker 22 root pwd123456
gts-131090 172.18.131.90 worker 22 root pwd123456

注意:
如果使用非root用户执行脚本,在执行tos续签脚本前,需要给该用户在对应节点上添加sudo权限,比如:
test-name245 ALL=(ALL) NOPASSWD: ALL
3. 证书更新
- 执行脚本,续签 CA 证书
manager(tos master)主节点 执行 ca-renewal-manager.sh 脚本进行证书更新
$ bash ca-renewal-manager.sh
脚本执行成功后会有如下显示,否则需根据提示查看脚本执行失败原因。

- 如果 Manager 开了高可用,则需要在另一个 Manager 节点更新 bootstrap
若 Manager 开启了高可用,可以将整个 ca-renewal 目录,拷贝到 2 个 Manager 节点,按照如下顺序,先后执行这 2 个脚本。
完成以上步骤,就代表 TOS CA 证书续签完成了。
$ bash 09-update-manager-db.sh
$ bash 09-update-manager-metainfo.sh
完成以上步骤,就代表 TOS ca 证书续签完成了。
后续步骤是修改 TOS metainfo,为扩容新节点时生成新证书。
4.手动修改tos的metainfo文件内容
- 确认tos 版本
docker images |grep etcd

- 找到tos的metainfo文件:
比如上图中,对应的 tos 版本为 tos-2.1.5
cd /var/lib/transwarp-manager/master/content/meta/services/TOS/tos-2.1.5
# 如果 service 目录不存在,则是services_imported
cd /var/lib/transwarp-manager/master/content/meta/services_imported/TOS/tos-2.1.5
- 修改metainfo.yaml
PS:一定要注意yaml 文件的格式和内容,复制粘贴修改 metainfo 时,一定要确认修改后的内容和缩进必须符合 yaml 要求。
如果修改后,点击 Manager 页面的 TOS 服务,页面出现,未使用 TOS,需要安装一个TOS服务,则需要检查一下 metainfo.yaml 内容和格式。
vi metainfo.yaml
找到 TOS_SLAVE 下的 type: Scaleout,在最后面加上以下内容,注意跟其他的directive并列,注意缩进保持一致
- 如果Manager版本在8.0及以后,直接使用下面的metainfo
- directive: !
script: |
<#assign distros = ["BCLINUX4EULER21", "EULER20", "EULER22", "KYLIN10", "NEOKYLIN7", "RHEL7", "RHEL8", "ROCKY8", "ROCKY9", "UOS1050A", "UOS1050E", "UOS1060E"]>
<#if distros?seq_contains(.data_model['node.distro'])>
(/bin/cp -f /srv/kubernetes/ca.pem /etc/pki/ca-trust/source/anchors/) && update-ca-trust
<#else>
(/bin/cp -f /srv/kubernetes/ca.pem /usr/local/share/ca-certificates/) && update-ca-certificates
#if>

- 如果是8.0以前的版本,判断扩容节点是什么操作系统
uname -a
cat /etc/os-release
["BCLINUX4EULER21", "EULER20", "EULER22", "KYLIN10", "NEOKYLIN7", "RHEL7", "RHEL8", "ROCKY8", "ROCKY9", "UOS1050A", "UOS1050E", "UOS1060E"]
如果在以上列表里面,使用以下内容修改。
- directive: !
script: |
(/bin/cp -f /srv/kubernetes/ca.pem /etc/pki/ca-trust/source/anchors/) && update-ca-trust
如果不在,使用以下内容修改。
- directive: !
script: |
(/bin/cp -f /srv/kubernetes/ca.pem /usr/local/share/ca-certificates/) && update-ca-certificates
- 重启 manager 生效。
systemctl restart transwarp-manager
5.TOS 配置服务
登录 Manager 页面,点击上方全局服务,TOS,然后配置服务。

如果扩容的节点是混部的,那么根据节点不同的操作系统,在执行扩容角色,tos slave启动失败后,手动将主节点下的/srv/kubernetes/ca.pem拷贝到对应目录,执行指令,后重启docker
6. 检查
0、检查当前集群TOS证书过期时间,登录集群任意节点,执行下面的命令
openssl x509 -text -in /srv/kubernetes/ca.pem |grep Not
如果显示是 2120 年过期,则表示续签成功。

1、检查 bootstrap
head /srv/kubernetes/bootstrap.kubeconfig
输出的 certificate-authority-data 最后几位是 :RU5EIENFUlRJRklDQVRFLS0tLS0K 代表续签完成。

附录:使用升级的方式续签
证书续签,可以通过脚本的形式,也可以通过升级 Manager 解决证书过期的问题。
如果已经是 Manager 9.4.0.0 版本,请参考以下链接: