之前帮客户处理了一个因证书过期导致 vCenter Server 无法登录的问题,在此记载一下,由于时间已往有点久了,可能会有些地方形貌的不是很清晰,所以就当作参考就行。客户情况是一个非常老的 vCenter Server 5.5 版本并基于 Linux 版本的 VCSA (其时这个版本还有基于 Windows 的,注意区别),早期可以使用基于 C# 开发的 Windows 客户端进行访问和管理 vCenter Server,当然这个版本也支持基于 Adobe Flex (也就是Flash)的 vSphere Web Client 并通过网页进行访问管理。
办理过程比力麻烦,牵涉到证书的替换和服务的重新注册,因此建议你在实行这些操作时,请一定做好快照和备份。自 vCenter Server 6.x 及以后,VMware 出了许多脚本工具可以很方便的处理证书过期等问题,可以参看以下 KB 知识库,但是在这之前的版本可就没那么方便了!
2、5.5 版本 vCenter Server 的 SSL 证书可以在 VAMI 管理后台开启证书主动更新功能,无必要手动进行更新,只必要登录 VAMI 管理后台开启后,当 vCenter Server 重启系统后会主动去更新。具体在 VAMI 管理后台的那个选项卡已经不记得了,不过 VAMI 后台页面的功能很少,应该很容易找到。
3、vCenter Server 勾选证书主动更新功能后,将 vCenter 重启,你可以使用 Shell 重启或者在 VAMI 后台或者直接通过 ESXi 控制台都行。其实,在重启 vCenter Server 的过程中,也能看到是由于证书过期造成的vCenter 故障,通过 ESXi 打开 vCenter 虚拟机的控制台并查看启动过程,可以看到启动过程中有一些报错,具体报错信息不太记得了,大概是启动某个并配置某个服务的时候,但是由于检测到证书已颠末期了,所以跳过了该配置。当vCenter Server 虚拟机重启后,依然无法使用客户端进行连接,由于只是更新了 vCenter Server 的 SSL 证书,上面图片中的证书其实是 STS 证书,还必要对该证书进行更新。 注:vCenter VAMI 管理后台开启 SSL 证书主动生成后,必要把它关闭掉,否则每次重启 vCenter 都会重新生成新证书。
4、首先,5.5 版本的 vCenter Server 的 STS 证书我是通过 vSphere Web Client 进行更新的(可以见下图),我没有找到通过命令行进行更新的方法,所以现在要更新这个证书面临着两个问题,第一个问题是 STS 证书必须使用命令行手动生成新的证书文件;第二个是由于现在 vCenter Server 服务有问题无法登录到 vSphere Web Client。
5、先说第二个问题, 由于 vCenter Server 证书过期问题导致服务也有问题无法登录 vSphere Web Client。有一个小技巧可以临时处理这个问题,就是将 vCenter Server 的系统时间调成证书过期之间的时间,然后重新启动 vCenter Server 让服务启动正常,然后登录到 vSphere Web Client 然后使用手动生成的新的 STS 证书完成替换。
想临时处理这个问题,也有许多步调。首先,第一步,STS 证书的管理必须要使用 SSO 管理员用户(administrator@vsphere.local)进行更新,所以你必要进入 VAMI 管理后台去启动 vCenter Server 的 SSO 用户,这个比力简单,在后台启用并配置 SSO 用户的暗码即可,如果之前你已经在使用 SSO 用户了那就跳过这一步。
第二步,由于当前 vCenter Server 的系统时间已经在 STS 证书过期日期之后,所以可以修改 vCenter Server 的系统时间为 STS 证书过期前的时间临时让其服务正常运行并可以进入到 vSphere Web Client。颠末多种方式对时间的修改(什么 NTP 时钟服务器同步、虚拟机系统时间同步了硬件时间、虚拟机系统时间由 VM-Tools 同步),发现 5.5 的 vCenter Server 的系统时间都没有改过来,后来通过在 vCenter Server 虚拟机的 VMX 配置文件里添加以下参数后终于成功修改,以下参数可以锁定 vCenter Server 虚拟机系统启动的时间,rtc.startTime 后面的值为时间戳,你可以使用 时间戳(Unix timestamp)转换工具 修改为 STS 证书时间过期前的时间。
tools.syncTime = "FALSE"
time.synchronize.continue = "FALSE"
time.synchronize.restore = "FALSE"
time.synchronize.resume.disk = "FALSE"
time.synchronize.shrink = "FALSE"
time.synchronize.tools.startup = "FALSE"
rtc.startTime = 1325376000
复制代码
使用客户端工具登录到 ESXi 并导航到 vCenter Server 虚拟机所使用的存储目录,将 VMX 配置文件下载到本地(注意备份),将上面的修改后的配置参数添加到 VMX 配置文件中并保存,再上传到 vCenter Server 虚拟机的存储文件夹中覆盖原来的配置文件。重新启动 vCenter Server 后,服务启动过程无报错并运行正常。 注:由于修改了主机 vCenter 的 VMX 配置文件,后面更新完 STS 证书后,在重新启动 vCenter Server 之前必要重新把原来的配置文件还原回去,否则每次 vCenter 启动都会继续配置文件中的时间。
通过修改 vCenter Server 的时间,vCenter 系统服务正常启动后,可以正常登录到vSphere Web Client。注意,由于访问必要使用 Flash,必要客户端安装 vCenter Server 所支持的 Flash 版本并使用支持的浏览器,否则将无法访问。 通过 SSO 管理员用户登录到 vCenter Server 后,导航到系统管理->Single Sign-On->配置->证书,这里可以看到 STS 证书已过期。