VCSA证书过期实战:从报错诊断到一键续订的完整指南
1. 当VCSA突然无法登录时,你的第一反应是什么?
那天早上刚到办公室,就接到同事紧急电话:"VCSA管理界面死活登不进去了!"相信很多运维同学都遇到过这种突发状况。我第一反应是打开浏览器,尝试访问VCSA的5480管理端口(https://你的VCSA_IP:5480),果然页面直接报错"证书无效"。这种情况十有八九是证书过期了——就像你家的门锁突然打不开,很可能是钥匙到期失效了。
为什么证书会突然过期?VCSA默认安装时会生成自签名证书,有效期通常只有2年。我见过太多案例,都是因为管理员忽略了证书到期提醒,直到某天突然被挡在管理界面外。更麻烦的是,当证书过期后,你连登录续订的入口都没有了,就像被反锁在家门外。
2. 快速诊断:三步确认证书问题
遇到登录失败先别慌,按这个检查清单快速定位问题:
第一步:看浏览器报错详情Chrome会显示"NET::ERR_CERT_DATE_INVALID",Firefox提示"SEC_ERROR_EXPIRED_CERTIFICATE"。这些明确告诉你证书时间有问题。
第二步:检查系统时间在客户端电脑打开命令行,输入:
date如果客户端时间偏差超过证书有效期(比如客户端显示2020年),那可能是时间同步问题。但如果是VCSA自身证书过期,客户端时间再准确也没用。
第三步:直连5480端口在浏览器直接访问VCSA的5480管理端口(注意是https)。如果这里也报证书过期,那就实锤了。我遇到过有同事折腾半天网络配置,最后发现就是个简单的证书过期问题。
3. 应急方案:时间回溯大法
证书过期后最直接的临时解决方案是——把VCSA的系统时间改回证书有效期内。这就像把时钟拨回到门锁还能用的日期。具体操作:
- 首先登录VCSA的5480管理界面(虽然网页报错,但实际连接已建立,只是浏览器拦截了页面)
- 进入"系统管理"→"时间配置",取消勾选"与NTP服务器同步"
- 开启SSH访问(同一页面有开关)
- 用SSH客户端连接VCSA,执行时间修改命令:
date -s "2022-12-22 10:00:00" # 改为你证书过期前的日期 hwclock --systohc # 将系统时间写入硬件时钟 service-control --start --all # 重启所有服务这个临时方案能让你重新登录管理界面,但注意:
- 这只是权宜之计,所有依赖时间的服务(如日志、监控)都会受影响
- VSAN环境可能出现性能监控异常,需要额外处理(后面会讲)
- 完成证书续订后务必恢复NTP时间同步!
4. 正式续订:两种可靠方法
4.1 图形化界面操作(推荐新手)
- 登录VCSA管理界面(https://VCSA_IP:5480)
- 进入"证书管理"→"证书续订"
- 勾选所有过期证书,点击"续订"
- 新证书默认有效期2年,确认后等待操作完成
4.2 命令行操作(适合批量处理)
对于STS证书等特殊类型,需要用命令行处理。以VCSA 6.7为例:
- 下载官方修复脚本:
wget https://kb.vmware.com/s/article/76719 -O /tmp/fixsts.sh如果网络不通,可以本地下载后用WinSCP上传到/tmp目录。遇到上传失败时,先执行:
chsh -s /bin/bash- 执行修复:
chmod +x /tmp/fixsts.sh /tmp/fixsts.sh按提示输入root密码,脚本会自动完成续订。
5. VSAN环境的特殊处理
在VSAN集群中,证书过期可能导致两个额外问题:
问题一:性能监控服务异常症状是vCenter的VSAN性能图表无法加载。解决方法:
/usr/lib/vmware-vmon/vmon-cli --restart vmware-vsan-health问题二:存储策略服务中断如果看到"Object Health Service Unavailable"报错,需要:
service-control --restart vmware-vmdq-service我曾在一个生产环境遇到更复杂的情况——续订证书后VSAN集群仍显示告警。后来发现需要手动重建服务证书:
/usr/lib/vmware-vmdir/bin/vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT /usr/lib/vmware-vmdir/bin/vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert /etc/vmware-vpx/ssl/rui.crt --key /etc/vmware-vpx/ssl/rui.key service-control --restart vmware-vpxd6. 防患于未然:证书监控方案
经历过几次半夜紧急处理证书过期后,我总结出这些预防措施:
- 设置日历提醒:在证书到期前1个月设置多个提醒
- 使用监控工具:通过vROps或第三方工具监控证书有效期
- 自动化续订脚本:
#!/bin/bash # 检查证书过期天数 expiry_days=$(openssl x509 -in /etc/vmware-vpx/ssl/rui.crt -noout -enddate | cut -d= -f2) remaining_days=$(( ($(date -d "$expiry_days" +%s) - $(date +%s)) / 86400 )) if [ $remaining_days -lt 30 ]; then echo "证书即将过期,自动续订..." /usr/lib/vmware-vmon/vmon-cli --stop vmware-vpxd /usr/lib/vmware-vmon/vmon-cli --start vmware-vpxd fi- 文档记录:在运维手册中标注所有证书的到期日
7. 那些年我踩过的坑
第一次处理VCSA证书过期时,我犯了个低级错误——没备份原始证书就直接续订。结果新证书配置异常,导致vCenter完全不可用。最后不得不从备份恢复,多花了4个小时。现在我的操作清单里永远有这一条:
# 续订前必做备份 tar -czvf /root/vcsa_cert_backup_$(date +%Y%m%d).tar.gz /etc/vmware-vpx/ssl/另一个常见误区是只续订了部分证书。VCSA有多个证书存储位置(MACHINE_SSL_CERT、vpxd-extension等),需要用这个命令检查所有证书:
for cert in $(find /etc/vmware -name "*.crt"); do echo "=== $cert ===" openssl x509 -in $cert -noout -dates done最后提醒:证书续订后,所有连接到vCenter的客户端(PowerCLI、备份软件等)可能需要重新信任新证书。有次我们自动化平台的脚本突然全部失败,排查半天才发现是证书指纹变更导致的。
