当前位置: 首页 > news >正文

vCenter证书过期导致Web服务挂掉?手把手教你用certificate-manager重置(附清理备份脚本)

vCenter证书过期应急修复全流程指南:从诊断到彻底清理

当vCenter Web服务突然无法访问时,证书过期往往是首要怀疑对象。不同于常规的证书续期操作,证书过期后的修复流程更为复杂,需要管理员具备完整的故障诊断能力和应急处理技巧。本文将带您深入探索一套经过实战验证的修复方案,涵盖证书状态检查、交互式重置、旧证书清理等关键环节,并分享几个只有资深运维才知道的避坑要点。

1. 故障诊断与证书状态深度检查

面对vCenter Web服务不可用的情况,盲目重启往往无济于事。我们需要先确认是否确实由证书过期引起,以及哪些具体证书出现了问题。

1.1 基础服务状态检查

首先通过SSH登录vCenter管理界面,检查核心服务运行状态:

service-control --status --all

重点关注以下服务是否正常运行:

  • vmware-vpxd
  • vmware-vmon
  • vmware-sts-idmd

如果发现服务异常停止,先尝试手动启动:

service-control --start vmware-vpxd

注意:若服务启动后很快又停止,很可能就是证书问题导致的连锁反应。

1.2 证书过期验证工具

VMware官方提供了一个实用的Python脚本checksts.py,可全面检查证书状态。将以下脚本保存为/root/checksts.py

#!/opt/vmware/bin/python import os import subprocess from datetime import datetime def check_cert_expiry(): stores = subprocess.check_output("/usr/lib/vmware-vmafd/bin/vecs-cli store list", shell=True).decode().split() for store in stores: print(f"\n检查存储: {store}") subprocess.call(f"/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store {store} --text | egrep 'Alias|Not After'", shell=True) if __name__ == '__main__': print("=== 开始证书过期检查 ===") check_cert_expiry() print("\n提示:若发现'Not After'日期早于当前时间,则表示证书已过期")

运行脚本获取详细证书信息:

chmod +x /root/checksts.py python /root/checksts.py

典型输出示例:

检查存储: MACHINE_SSL_CERT Alias: __MACHINE_CERT Not After: Jan 01 2022 00:00:00 GMT

关键解读

  • 比较"Not After"时间与当前时间
  • 重点关注MACHINE_SSL_CERTvpxd-extension等关键证书
  • 记录所有过期证书的Alias名称

2. 证书重置全流程实操

确认证书过期后,我们需要使用VMware内置的certificate-manager工具进行重置。这个过程需要谨慎操作,任何参数填写错误都可能导致修复失败。

2.1 重置前的必要准备

  1. 备份关键配置

    cp /etc/vmware-vpx/vpxd.cfg /root/vpxd.cfg.bak cp /etc/vmware-vpx/ssl/rui.crt /root/rui.crt.bak
  2. 确保SSO账户可用

    • 准备具有管理员权限的SSO账户(通常是administrator@vsphere.local)
    • 测试账户密码是否有效:
      /usr/lib/vmware-vmafd/bin/vmafd-cli get-domain-name --server-name localhost
  3. 快照保护(强烈建议): 通过vSphere Client或ESXi直接为vCenter虚拟机创建快照,标记为"Pre-certificate-reset"。

2.2 交互式重置过程详解

执行证书重置命令:

/usr/lib/vmware-vmca/bin/certificate-manager

关键交互步骤与填写指南

  1. 选择操作类型:

    请选择要执行的操作 [1] 重置所有证书 [2] 仅重置机器SSL证书 → 输入1(完整重置)
  2. 证书替换方式:

    您希望如何替换证书? [1] 生成新证书 [2] 使用自定义证书 → 输入1(推荐大多数场景)
  3. 身份验证信息:

    输入SSO管理员用户名(如administrator@vsphere.local): 输入SSO管理员密码:
  4. 证书参数确认:

    主机名 [当前值:vcsa01.example.com]: IP地址 [当前值:192.168.1.100]: → 通常直接回车接受默认值
  5. 最终确认:

    即将重置以下证书:MACHINE_SSL_CERT, VPXD_EXTENSION... 确认继续? [y/n]:y

典型问题处理

  • 若遇到"Invalid credentials"错误,检查SSO账户是否被锁定
  • 出现"Failed to generate certificate"时,尝试先清理旧证书(见第3章)
  • 网络超时情况下,确保DNS解析正常

2.3 服务重启与验证

重置完成后,必须重启vCenter服务:

reboot # 或分步重启 service-control --stop --all service-control --start --all

验证步骤:

  1. 等待约10-15分钟让服务完全启动
  2. 检查服务状态:
    tail -f /var/log/vmware/vpxd/vpxd.log
  3. 尝试通过浏览器访问Web界面
  4. 再次运行checksts.py确认新证书有效期

3. 旧证书存储深度清理

证书重置后,系统会保留旧证书的备份。这些残留可能占用存储空间,甚至在某些情况下干扰新证书的正常工作。我们需要彻底清理这些备份。

3.1 安全清理脚本使用

将以下脚本保存为/root/clean_backup_stores.sh

#!/bin/bash echo "=== 备份存储清理工具 ===" # 确认快照 read -p "确认已为vCenter创建快照?[y/n] " -n 1 -r if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo -e "\n操作中止:必须先创建快照!" exit 1 fi echo -e "\n当前证书存储状态:" for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo "存储 [$store] 内容:" /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -E 'Alias|Not After' done # 清理主备份存储 echo -e "\n开始清理BACKUP_STORE..." for alias in $(/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE | grep -i "alias" | cut -d ":" -f2); do echo "删除备份证书:$alias" /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias "$alias" -y done # 检查并清理历史备份存储(如存在) if /usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -q 'BACKUP_STORE_H5C'; then echo -e "\n发现历史备份存储BACKUP_STORE_H5C,正在清理..." for alias in $(/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE_H5C | grep -i "alias" | cut -d ":" -f2); do echo "删除历史备份证书:$alias" /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE_H5C --alias "$alias" -y done fi echo -e "\n清理完成后的存储状态:" for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo "存储 [$store] 内容:" /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -E 'Alias|Not After' done echo -e "\n操作成功完成!建议重启服务:" echo "service-control --stop --all && service-control --start --all"

赋予执行权限并运行:

chmod +x /root/clean_backup_stores.sh /root/clean_backup_stores.sh

注意事项

  • 脚本执行前必须确认有可用快照
  • 操作不可逆,建议在维护窗口期进行
  • 如果vCenter是集群部署,需要在所有节点执行

3.2 手动清理方法(备用)

如果脚本无法使用,可以手动清理:

# 列出所有备份证书 /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE # 逐个删除(替换ALIAS_NAME) /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias ALIAS_NAME -y # 验证清理结果 /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE

4. 长效预防措施与监控

修复证书问题只是治标,建立有效的预防机制才能避免问题重演。

4.1 证书有效期监控方案

  1. 自动化监控脚本: 创建定期任务检查证书状态:

    #!/bin/bash EXPIRY_THRESHOLD=30 # 提前30天告警 CRITICAL_CERTS=("MACHINE_SSL_CERT" "vpxd-extension") for cert_store in "${CRITICAL_CERTS[@]}"; do expiry_date=$(/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $cert_store --text | grep -A1 "Alias" | grep "Not After" | awk '{print $4,$5,$7}') expiry_epoch=$(date -d "$expiry_date" +%s) current_epoch=$(date +%s) days_left=$(( (expiry_epoch - current_epoch) / 86400 )) if [ $days_left -le $EXPIRY_THRESHOLD ]; then echo "警告:证书 $cert_store 将在 $days_left 天后过期!" # 这里可以添加邮件通知逻辑 fi done

    添加到cron每周执行:

    echo "0 9 * * 1 /root/check_cert_expiry.sh" >> /etc/crontab
  2. vCenter告警配置

    • 登录vSphere Web Client
    • 导航到"监控" → "告警" → "定义"
    • 创建新告警规则监控证书相关事件

4.2 证书生命周期管理最佳实践

  • 续期时间窗:在证书到期前60天开始准备续期
  • 文档记录:维护所有证书的签发日期、过期日期和续期记录
  • 测试环境验证:重大变更前先在测试环境验证流程
  • 双因素认证:保护证书管理账户,避免误操作

证书管理检查清单

项目频率负责人
检查所有证书状态每月运维团队
验证监控脚本运行每季度自动化小组
更新证书管理文档每次变更后操作人员
演练证书续期流程每年全体运维

5. 高级故障排除技巧

即使按照标准流程操作,仍可能遇到各种意外情况。以下是几个实战中总结的疑难问题解决方案。

5.1 证书重置后服务仍无法启动

现象:执行完所有步骤后,vpxd服务仍然崩溃。

排查步骤

  1. 检查vpxd日志中的具体错误:

    tail -n 100 /var/log/vmware/vpxd/vpxd.log | grep -i cert
  2. 验证证书链完整性:

    openssl verify -CAfile /etc/vmware-vpx/ssl/rui.crt /etc/vmware-vpx/ssl/rui.key
  3. 检查时间同步状态:

    vmdird-cli get-server-time --server-name localhost

常见解决方案

  • 手动重建证书存储:
    /usr/lib/vmware-vmca/bin/certificate-manager --renew --cert all --server-name localhost
  • 恢复快照并联系VMware支持

5.2 多节点环境下的特殊处理

对于采用外部PSC或vCenter集群的环境,需要注意:

  1. 操作顺序

    • 先处理PSC节点
    • 再处理vCenter节点
    • 最后处理其他依赖服务
  2. 同步检查

    /usr/lib/vmware-vmafd/bin/vmafd-cli get-ls-location --server-name localhost
  3. 跨节点验证

    /usr/lib/vmware-vmca/bin/certificate-manager --refresh --cert all --server-name psc01.example.com

5.3 证书相关性能问题

有时证书问题会表现为性能下降而非直接服务中断:

  • 症状

    • Web界面加载缓慢
    • API响应时间延长
    • 偶发性认证失败
  • 诊断命令

    openssl s_client -connect localhost:443 -showcerts | openssl x509 -noout -text
  • 优化建议

    • 使用ECDSA证书替代RSA
    • 调整SSL参数:
      vpxd_servicecfg ssl set-protocols TLSv1.2
http://www.jsqmd.com/news/714236/

相关文章:

  • 大家千万不要无脑讨价还价-机会往往只有一次
  • 大学生-研究生毕业找工作思路整理
  • 抖音获客:流量密码背后的真实与挑战 - 年度推荐企业名录
  • XposedRimetHelper技术解构:系统级定位拦截与时空控制机制分析
  • 打工和赚钱的断层6-打工永远盯着短期利益-赚钱则要明白轻重缓急
  • 你的App连不上WiFi?可能是Android 10的隐私权限在搞鬼(附排查指南)
  • 手把手用CubeMX+MDK给STM32H743/F407搭建RTX5项目(附工程模板)
  • 大家去现实世界见见活人吧-别再不停的电子鸦片了
  • 大学生专辑-看清那些花里胡哨的-只关心本质就好了
  • 新手必看:2026年腾讯企业邮箱购买方式全流程解析 - 品牌2025
  • ImageStrike技术深度解析:CTF图像隐写分析的多模态架构实现
  • 2026年大理石异形平台厂家推荐:泊头市华博工量具,大理石打孔平台/大理石检验平台/大理石00级平台厂家 - 品牌推荐官
  • YOLOv5模型魔改实战:插入SE模块后,我的检测精度提升了多少?(附消融实验对比)
  • AI沈阳工具谁家最好服务?星闪Ai智能体避坑指南,教你选对工具少走弯路
  • 打工和赚钱的断层7-一个是寻求0到1-一个是追求性价比和安全
  • 大家日常经常用到的画饼和讲故事技巧
  • 抖音获客:流量密码背后的真实挑战 - 年度推荐企业名录
  • 另类文件备份方法
  • 2026 四款 AI:代码质量与生成速度比拼
  • 打工和赚钱的断层8-一个靠别人喂到嘴里-一个靠发自内心的驱动
  • #2026最新公司注册公司推荐!南昌优质权威榜单发布,专业靠谱南昌等地公司服务可信赖 - 十大品牌榜
  • Go-CQHTTP完整指南:5分钟搭建跨平台QQ机器人助手
  • 【紧急预警】Docker AI Toolkit 2025.3及更早版本存在CUDA Context泄漏漏洞(CVE-2026-10842),2026新版热修复补丁+迁移脚本已同步Harbor私有仓库
  • 大家如果付出了时间和努力-尽量追求资本和商业上的成长
  • 2026第二季度国内压缩空气流量计厂家TOP6排名榜 - 流量计品牌
  • 打工和赚钱的断层9-一个永远在沉淀积累-一个是通过结果去进步
  • 【Matlab】MATLAB教程:MATLAB与Excel交互实操(actxserver调用Excel案例+Excel自动化处理应用)
  • 2026年贵州护栏网工程批发与贵阳工程护栏安装一站式解决方案指南 - 年度推荐企业名录
  • 2026年碳酸饮料生产线厂家好评榜:奶酪生产线/果汁生产线/果酱生产线/酵素产品生产线/酒类加工生产线 - 品牌策略师
  • nli-MiniLM2-L6-H768环境部署:Docker镜像免配置+GPU算力自动适配详细步骤