kubernetes-更换apiserver https证书

kubernetes-更换apiserver https证书

工作中因为访问 kubernetes apiserver想使用新的域名访问,但是历史apiserver的证书之前配置的SANS 缺少了这域名,所以需要对apiserver https证书做变更,sans新增某个域名,但是kube proxy和kubelet不变,依旧使用原IP访问。

所以下文只针对在ca不变的情况下,apiserver的cert中新增某个san 域名。

环境检查

kube-apiserver 启动的参数中指定了ca以及apiserver的公私钥

 - --client-ca-file=/etc/kubernetes/pki/ca.crt
 "--tls-cert-file=/etc/kubernetes/pki/apiserver.crt",
 "--tls-private-key-file=/etc/kubernetes/pki/apiserver.key"
获取已有的SAN列表
# 进入存放证书的目录(宿主机映射目录或容器内)
cd /etc/kubernetes/pki

# 查看当前 apiserver.crt 的 SAN 列表
openssl x509 -in apiserver.crt -text -noout | grep -A1 "Subject Alternative Name"

1. 创建 CSR 配置文件

生成包含所有必需 SAN 的配置文件(apiserver-new.csr.conf):

#cat > apiserver-new.csr.conf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext

[ dn ]
CN = kube-apiserver   # 可保持不变,但 SAN 才是关键

[ req_ext ]
keyUsage = keyEncipherment, digitalSignature
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
DNS.5 = your-master-hostname        # 替换为节点主机名
IP.1 = 10.96.0.1                    # Cluster IP (Service CIDR)
IP.2 = 192.168.1.100                # 节点内网 IP
IP.3 = 127.0.0.1
IP.4 = 203.0.113.5                  # 节点公网 IP (如有)
DNS.6 = *.missing-domain.com          # 添加缺失的域名
# ... 确保包含所有旧的 SAN + 新域名
EOF
2. 生成新私钥和证书

使用原有 CA 签发证书:

cd /etc/kubernetes/pki

# 备份旧证书(非常重要!)
cp apiserver.key apiserver.key.bak
cp apiserver.crt apiserver.crt.bak

# 生成新私钥
openssl genrsa -out apiserver-new.key 2048

# 生成 CSR
openssl req -new -key apiserver-new.key -out apiserver-new.csr -config apiserver-new.csr.conf

# 用原有 CA 签发新证书
openssl x509 -req -in apiserver-new.csr \
  -CA ca.crt \
  -CAkey ca.key \
  -CAcreateserial \
  -out apiserver-new.crt \
  -days 3650 \
  -extensions req_ext \
  -extfile apiserver-new.csr.conf

# 重命名新证书替换旧证书
mv apiserver-new.key apiserver.key
mv apiserver-new.crt apiserver.crt

重启api服务即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

robin5911

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值