调整域名配置
如果一开始在安装ESXi的时候,如果我们没有在配置页面输入搜索域或者是域名的情况下,ESXi是会默认给你一个localhost.localdomain的证书的,也能保证安全。

上图来源于网络
我们要去修改 ESXi 主机名,来保证完整使用。
首先。登录到ESXi Host Client的Web界面,导航至 网络 -> TCP/IP 堆栈 -> 默认 TCP/IP 堆栈 -> 编辑设置。将“主机名称”从 localhost 修改为目标名称(如 esxi-01),并填写正确的“域名”(如 yourdomain.com),最好搜索域也一并改成跟域名一样的地址。最后保存。这样相当于ESXi内部是被设置了主机名的,就不会再出现localhost.localdomain的情况。


这时候,我们运行以下命令其实是可以基于FQDN自动生成证书的。
/sbin/generate-certificates
这个证书是自签名,不被浏览器接受,我们还是要继续往下走。
上传域名证书
找到我们从SSL商提供的证书,一般是Nginx方式给的pem格式的crt证书,跟配套的key文件。接下来就是替换了。
先把SSL提供的证书修改为rui.crt跟rui.key,默认ESXi只认这个名字。
把这两个文件通过WinSCP等工具上传到/tmp目录下,剩下的我们通过SSH连接到ESXi服务器上进行配置。
通过Putty等工具,登录到ESXi上,执行以下命令
mv /etc/vmware/ssl/rui.crt /etc/vmware/ssl/rui.crt.bak mv /etc/vmware/ssl/rui.key /etc/vmware/ssl/rui.key.bak cp /tmp/rui.crt /etc/vmware/ssl/ cp /tmp/rui.key /etc/vmware/ssl/
重启服务
最后执行热启动服务等生效就够了。
/etc/init.d/hostd restart /etc/init.d/vpxa restart
疑难处理
一般来说,经历上面的就能把域名证书更新了,刷新浏览器缓存基本上就可以看到绿锁了。不过我就遇到了执行以上命令仍然不通过的。
接下来我来讲我是如何处理的:
- 先执行命令让EXSi重新生成基于新的FQDN的证书
/sbin/generate-certificates
- 再将我们拿到的SSL证书厂商发的证书重新上传
这里我就不再描述了,跟上面一样 - 执行以下命令来验证证书是否有效
有可能是私钥跟ESXi不匹配,我们让OpenSSL重新调整下转换为标准的 RSA 格式 (PKCS#1)openssl rsa -in rui.key -out rui.key
也有可能没上传成功,我们检查下网域情况,看看是否正确
openssl x509 -in rui.crt -text -noout | grep "Subject:" openssl x509 -in rui.crt -text -noout | grep -A 1 "Subject Alternative Name"
最后看两个证书的MD5是否一样
openssl x509 -noout -modulus -in rui.crt | openssl md5 openssl rsa -noout -modulus -in rui.key | openssl md5
也许前面都作对了,但是可能是前面的热重启命令没有完全刷新缓存,使用这个命令可以完整刷新,不过可能会造成SSH断线。
- 执行服务全部重启命令
services.sh restart
本文作者为Nicky,转载请注明。