VCSA证书过期时当存在第三方的解决方案证书更新报错问题处理
测试环境存在Zerto时已经通过验证
Task Steps:
- SSH to PSC
- Run the Certificate Manager tool from
/usr/lib/vmware-vmca/bin/certificate-manager
- Select to Replace Machine SSL Certificate with Custom Signed Certificate
- Generate CSR and key files
- SCP the CSR from the PSC/VCSA
- Create certificate from CSR
- Create chain certificates for root certificate and Machine SSL certificate
- SCP back to PSC/VCSA
- Replace with the Certificate Manager tool
任务步骤:
- 通过短信连接到 PSC
- 从中运行证书管理器工具
/usr/lib/vmware-vmca/bin/certificate-manager
- 选择将计算机 SSL 证书替换为自定义签名证书
- 生成 CSR 和密钥文件
- SCP 来自 PSC/VCSA 的 CSR
- 从 CSR 创建证书
- 为根证书和计算机 SSL 证书创建链证书
- SCP 回到 PSC/VCSA
- 替换为证书管理器工具
在替换 PSC 上的证书期间(如果您仍在使用外部 PSC,则需要在 VCSA 之前完成),我遇到了错误,更换证书失败。
当 VMCA 查找所有服务以验证哪些服务需要使用新的证书指纹进行更新时,我收到了错误。特别是,VMCA遇到了它不喜欢的第三方插件。以下是它向我展示的一些内容:
Get service c2232449-f7cd-4fd5-ac80-dd99a0a51ee3
Update service c2232449-f7cd-4fd5-ac80-dd99a0a51ee3; spec: /tmp/svcspec_z_br_7_1
Get service 3b6f4b0a-5b54-4648-a308-51ac4fbc8459
Update service 3b6f4b0a-5b54-4648-a308-51ac4fbc8459; spec: /tmp/svcspec_cgtwn52b
Get service 2e46cfb0-8999-47e0-9891-585d5d4e0c6d
Don't update service 2e46cfb0-8999-47e0-9891-585d5d4e0c6d
Get service 32457dce-cad3-4f3f-a360-9028d2f80031
Update service 32457dce-cad3-4f3f-a360-9028d2f80031; spec: /tmp/svcspec_op6l724r
Get service a93d658b-d886-46bb-8950-06b3fbc04df4
Don't update service a93d658b-d886-46bb-8950-06b3fbc04df4
Get service a7310628-de94-42c8-b3b0-6d1c0192dddf_com.nimblestorage.hi.h5
Status : 0% Completed [Operation failed, performing automatic rollback]Error while replacing Machine SSL Cert, please see /var/log/vmware/certificate-manager.log for more information.
Performing rollback of Machine SSL Cert...
Get site nameus : 0% Completed [Rollback Machine SSL Cert...]
紧随其后的是查找要更新的服务和另一个失败的相同过程。
Get service a93d658b-d886-46bb-8950-06b3fbc04df4
Don't update service a93d658b-d886-46bb-8950-06b3fbc04df4
Get service 32457dce-cad3-4f3f-a360-9028d2f80031
Don't update service 32457dce-cad3-4f3f-a360-9028d2f80031
Get service a7310628-de94-42c8-b3b0-6d1c0192dddf_com.nimblestorage.hi.h5Error while reverting certificate for store : MACHINE_SSL_CERT
Rollback Status : 0% Completed [Rollback operation failed]Error while performing rollback operation, please try Reset operation...
please see /var/log/vmware/certificate-manager.log for more information.
查看证书管理器.log文件,我发现与证书管理器发出的命令相关的故障。
2019-06-28T16:04:11.891Z INFO certificate-manager lstool command currently being executed is : ['/usr/java/jre-vmware/bin/java', '-Djava.security.properties=/etc/vmware/java/vmware-override-java.security', '-cp', '/usr/lib/vmware-sca/lib/lookup-client.jar:/usr/lib/vmware-sca/lib/*:/usr/lib/vmware/common-jars/*', '-Dlog4j.configuration=tool-log4j.properties', 'com.vmware.vim.lookup.client.tool.LsTool', 'get', '--no-check-cert', '--url', 'https://psc.mueller-tech.local/lookupservice/sdk', '--id', 'a7310628-de94-42c8-b3b0-6d1c0192dddf_com.nimblestorage.hi.h5', '--as-spec']
2019-06-28T16:04:13.748Z ERROR certificate-manager 'lstool get' failed: 1
2019-06-28T16:04:13.748Z INFO certificate-manager Error while reverting certificate for store : MACHINE_SSL_CERT
2019-06-28T16:04:13.749Z ERROR certificate-manager Error while performing rollback operation, please try Reset operation...
2019-06-28T16:04:13.749Z ERROR certificate-manager please see /var/log/vmware/certificate-manager.log for more information.
解决方案:
我以前遇到过这个!在遥远的过去,我曾向 VMware 支持部门就此问题(使用不同的插件)开过一张票证。证书管理器在查看要更新的服务列表时,发现了插件的问题。在这种情况下,它恰好是证书管理器不满意的HTML5客户端的Nimble Storage插件。
为了解决此问题,我需要通过托管对象浏览器取消注册插件。威廉·林(William Lam),他写了这篇关于如何做到这一点的伟大文章。我过去也这样做过,但很快就把威廉的文章作为复习。
更新:VMware似乎在我遇到它一段时间后发布了一篇关于此的知识库文章。
新问题:
正如我前面提到的,手头的任务是替换已经过期的证书。由于证书过期,我无法登录到 vSphere Web Client 或 vSphere Client (HTML 5 客户端)。除此之外,vRealize Automation和Horizon服务也由于这次事故而离线。
您知道证书过期后还有什么不能登录吗?托管对象浏览器。 这一事实使得取消注册扩展特别困难。这是一个经典的先有鸡还是先有蛋的场景。若要通过 MOB 取消注册扩展,我需要替换证书。要替换证书,我需要取消注册有问题的扩展...
重要提示:我分享以下解决方案,以提醒自己下次使用,并帮助遇到本文的任何人。我无法为以下描述的操作提供支持。在您的环境中继续执行风险,或由 VMware 支持部门指导。
新的解决方案:
我最终与VMware支持部门合作,他们让我对证书管理器使用的脚本进行了一些更改。使用以下步骤执行此操作:
- 通过 SSH 连接到 PSC 或 VCSA
- 登录到 bash 外壳
- 导航到 /usr/lib/vmware/site-packages/cis (
cd /usr/lib/vmware/site-packages/cis
) - 复制文件 certificateManagerHelper.py (
cp certificateManagerHelper.py certificateManagerHelper.py.bak
) - 编辑 certificateManagerHelper.py (
vi certificateManagerHelper.py
) - 搜索以下块:
if(rc != 0):
logging.error("'lstool get' failed: {}".format(rc))
raise Exception("'lstool get' failed: %d" % rc) - 通过替换第二行并注释掉第三行来编辑块,如下所示:
if(rc != 0):
rc = 0;
#raise Exception("'lstool get' failed: %d" % rc) - 保存文件
这项工作有效地告诉证书管理器 - 当您查看服务并收到不等于零的返回代码时 - 将该返回代码设置为零并继续。
完成此编辑后,我能够成功更新我的计算机SSL证书,而不会出现任何进一步的问题。这是一个非常有用的提示,我想一定要记住。这比取消注册此操作的插件的影响要小得多。
我希望有人觉得这有帮助!
原文 https://mueller-tech.com/2019/06/28/replacing-expired-certificates/
使用自签名证书替换步骤参考
VMware之使用自签名证书替换vSphere各组件自带SSL证书 - 猫先生的日常点滴 (mr-mao.cn)
目的
本文介绍了使用 VMware 证书颁发机构 (VMCA) 中的新自签名证书重新生成 vSphere 6.x、7.x 和 8.0 证书的步骤。
注: 此过程可用于从 vCenter Server 证书已过期的情况下快速恢复。
分辨率
- 在使用证书管理器重新生成证书之前,请确保 STS 证书有效。
- 如果 STS 已过期或损坏的证书重新生成将失败,因为服务依赖项在没有有效令牌的情况下无法启动。
- 此任务将 VMCA 根证书替换为新的自签名证书,然后将计算机 SSL 和解决方案用户证书替换为 VMCA 颁发的新证书。
- 如果您运行的是外部平台服务控制器,则需要在外部 vCenter Server 6.x 上运行 vSphere 6.x 证书管理器并执行以下任务:
- 将计算机 SSL 证书替换为 VMCA 证书(选项 3)
- 将解决方案用户证书替换为 VMCA 证书(选项 6)
替换 STS 证书后,请按照以下步骤替换其他证书。
注: 请先拍摄 vCenter 的快照或备份,然后再继续操作。
要使用新的自签名 VMware 证书颁发机构证书重新生成 vSphere 6.x 证书,请执行以下操作:
- 启动 vSphere 6.x 证书管理器。
对于 vCenter Server 6.x/7.x Appliance:/usr/lib/vmware-vmca/bin/certificate-manager 对于 Windows vCenter Server 6.x:C:\Program Files\VMware\vCenter Server\vmcad\certificate-manager
- 选择选项 4(重新生成新的 VMCA 根证书并替换所有证书)
注: 您还可以选择选项 8(重置所有证书)。这两个选项执行相同的功能。(不同之处在于选项 8 不执行证书的自动回滚)。
- 出现提示时键入 administrator@vsphere.local 密码。
- 如果这是首次在此系统上重新生成 VMCA 证书,系统会要求您配置 certool.cfg。在后续任务中,系统会为您提供重用这些值。
注: 这些值用于定义 VMCA 颁发的证书。
按照 VMCA 的提示输入这些值(请参阅步骤 5 以确认名称/主机名/VMCA):
请为certool.cfg 文件配置正确的值,然后再继续下一步。
按 输入 键跳过可选参数或使用默认值。
为“国家/地区”输入适当的值 [默认值:美国] : (注意:国家/地区的值应仅为 2 个字母)
为“名称”输入适当的值 [默认值:CA] : 为“组织”输入适当的值 [默认值:VMware] : 为“组织单位”输入适当的值 [默认值:VMware 工程部] : 为“州”输入适当的值 [默认值:加利福尼亚州] : 为“位置”输入适当的值 [默认值 :
帕洛阿尔托] : 输入正确的值 “IPAddress” [可选] : 为“电子邮件”输入正确的值 [默认值 : email@acme.com] : 输入正确的“主机名” 值 [输入有效的完全限定域名 (FQDN),例如: example.domain.com] : 输入 VMCA “名称”的正确值:
(注意:将从 vCenter Server 6.0 U3、6.5 及更高版本请求此信息,您可以将 vCenter Server 的 FQDN/PNID 用于此字段。它将用作 VMCA 根证书的公用名)
- 键入是 (Y) 以确认请求继续。
您将使用 VMCA 重新生成根证书和所有其他证书 继续操作 : 选项 [Y/N] ? : Y 注意:名称、主机名和 VMCA
值应与替换证书的节点的 PNID 匹配。
PNID 应始终与主机名匹配。要获取 PNID,请运行以下命令:适用于 vCenter Server Appliance (VCSA)
/usr/lib/vmware-vmafd/bin/vmafd-cli get-pnid --server-name localhost
适用于 Windows vCenter Server
C:\Program Files\VMware\vCenter Server\vmafdd\“ vmafd-cli.exe get-pnid --server-name localhost