Loading

【VMware ESXi】调整客户端时间来模拟ESXi主机证书已过期和未生效。

安装ESXi主机时,主机最初会自动生成自签名证书。如果将主机添加到vCenter Server,则vCenter Server默认将使用VMCA作为根CA来为主机签名证书。当然还可以使用第三方或企业CA签名的自定义证书来颁发给ESXi主机。

证书用于安全加密通信,在ESXi主机加入vCenter Server后,两者之间通过TLS来处理所有的管理流量。

看下图,ESXi主机在初始安装完以后,会自动生成主机名称的自签名证书,颁发者是VMware Installer。

或者通过登录shell命令行查看ESXi主机证书的有效期。

openssl s_client -connect localhost:443 | grep NotBefore

通过调整客户端的时间,可以模拟测试一下ESXi主机证书已过期和未生效这两种情况。

模拟ESXi主机证书未生效,可以往后调整ESXi主机的系统时间,然后重新生成新证书。

或者通过登录shell命令行使用esxcli命令设置ESXi主机的系统时间。

esxcli system time set --year 2024 --month 3 --day 31 --hour 05 --min 00 --sec 00

通过调整ESXi主机系统时间为未来时间后,然后使用命令重新生成ESXi主机证书。

/sbin/generate-certificates
/etc/init.d/hostd restart

重新生成证书并重启hostd服务后,主机的证书会重新生成基于当前主机时间的新证书。

刷新VMware Host Client客户端,这时首页会出现如下的警告,提示主机证书未生效。

分配至该主机的证书尚未生效。 应该安装有效证书。
The certificate assigned to this host is not valid yet. You should install a valid certificate.

查看ESXi主机的新证书,可以看到证书的有效期是根据主机的时间(UTC)+8小时生成的。有效期10年。

或者通过登录shell命令行查看ESXi主机证书的有效期。

其实,之所以提示证书未生效,是因为刚刚我们把ESXi主机的时间调成未来的时间,然后证书再根据这个时间重新生成了一个未来的有效期导致的。

可能有的人在全新安装ESXi主机的时候,当ESXi主机被设置成了不正确的时间,可能就会发生此问题,生成证书的有效起始日期是一个未来的时间。

要解决这个问题也很简单,看下图,本地客户端正常的日期是3月30日,而证书的有效起始日期是3月31日,将本地客户端的日期调整为证书的有效期间,也就是说我是在证书有效期间去访问ESXi主机的,这样在正常的时间内,就不会产生证书未生效的告警了。

调整本地客户端的时间为3月31日,刷新VMware Host Client,此时没有证书未生效的告警了。
 
 
当然,还有最直接也是最合理的办法,出现问题的原因为证书生成的有效起始日期是未来时间导致的,那将ESXi主机的时间调整为正确的时间,然后再重新生成新的证书就可以了。也就是我开头调整主机时间再重新生成证书的方式,我上面只是模拟的场景。
 
其实,将主机的时间调整为正确的时间,最合理的办法不是手动调整主机的日期和时间,而是为主机配置NTP时钟服务器来保持时间自动同步。如下所示。
 

或者通过登录shell命令行使用esxcli命令设置ESXi主机的NTP服务器。

esxcli system ntp set --enabled true --server ntp.ntsc.ac.cn

通过调整ESXi主机系统时间为正确时间后,然后使用命令重新生成ESXi主机证书。

/sbin/generate-certificates
/etc/init.d/hostd restart

刷新VMware Host Client客户端,这时首页不会再提示主机证书未生效的警告了。

查看ESXi主机的新证书,可以看到证书的有效起始日期变成正常时间了。有效期10年。

或者通过登录shell命令行查看ESXi主机证书的有效期。

通过上面的模拟,出现证书未生效警告的原因是证书生成未来的有效起始日期导致的,当本地客户端以正常的时间去访问时,警告出现,可以通过调整本地客户端的时间为证书有效期内的时间或者调整主机系统的时间重新生成新的证书来解决这个问题。

也就是说,出不出现这个警告是通过鉴别本地客户端的时间来决定的,那换个思路,调整本地客户端的时间为未来时间,在证书有效截止日期之后,来模拟ESXi主机证书已过期。

调整本地客户端时间为2035年10月1日后,刷新VMware Host Client,这时首页出现如下警告。

分配至该主机的证书已过期。 应该安装有效证书。
The certificate assigned to this host has expired. You should install a valid certificate.

出现这个问题后,要解决这个问题也非常简单,跟上面证书未生效所处理的方式是一样的,就不再累述了。

上面所说的情况是在独立的ESXi主机上,如果ESXi主机已经受vCenter Server管理了,那就不能这么做了。

登录vCenter Server,我们可以在主机-配置-系统-证书这个地方看到ESXi主机的证书,颁发者是vCenter。

vCenter使用VMware Certificate Authority (VMCA) 作为根证书颁发机构为所有加入ESXi 主机颁发证书。

通过vCenter颁发的ESXi证书默认有效期是5年,在vSphere Client中,如果证书处于不久即将过期状态(少于八个月),则会发出黄色警报;如果证书处于即将过期状态(少于两个月),则会发出红色警报。出现告警后,我们只需要在vSphere Client中,展开主机证书管理,在右上角的地方点击“更新”即可续订ESXi主机的证书。
 
 
或者,右击该ESXi主机,展开证书管理,点击“续订证书”即可。
 
 
点击续订证书后,ESXi主机证书会被刷新。
 
 
想一想,上面的小技巧是不是可以同样用于vCenter Server证书问题?

可知道,这些证书都是基于时间进行创建并使用的?

所以呀,时间真是一位伟大的作者啊!

posted @ 2024-03-31 17:55  JUNIOR_MU  阅读(363)  评论(0编辑  收藏  举报