ESXI 6.7 ESXI 7.0 更换SSL证书

Esxi 自定义证书的要求越来越高了,例如下面不同版本的要求:

ESXi 6.5:https://docs.vmware.com/cn/VMware-vSphere/6.5/com.vmware.vsphere.security.doc/GUID-0AE0B563-59D6-45A5-BF46-6FE68607687B.html

ESXi 6.7:https://docs.vmware.com/cn/VMware-vSphere/6.7/com.vmware.vsphere.security.doc/GUID-0AE0B563-59D6-45A5-BF46-6FE68607687B.html

ESXi 7.0:https://docs.vmware.com/cn/VMware-vSphere/7.0/com.vmware.vsphere.security.doc/GUID-0AE0B563-59D6-45A5-BF46-6FE68607687B.html

当前6.7 和7.0要求是一样的

上个月namecheap申请的证书马上到期要续签,没注意邮件,过期才发现,只能重新购买证书了,但是按照之前的步骤申请证书、更换证书后web 端根本打不开了,重启之后甚至虚拟机也不能启动了。折腾一下午终于搞好了,找到了一个标准的方法,并且发现网上几乎没有正确的教程,甚至官方的教程都太老,是错的,遂记录下来。

首先要修改hostname及fqdn:

# 获取当前hostname相关信息
esxcli system hostname get
# 更改hostname及fqdn,名称均为要申请证书的域名
esxcli system hostname set --host=<domain>
esxcli system hostname set --fqdn=<domain>
# 修改完后最好再查看一下当前的信息
esxcli system hostname get

然后是生成CSR阶段,这里是根据官方教程,但是引用的一个重要文太旧官方居然也不更新。

建立一个openssl.cnf配置文件,此处根据上面提到的重要文档加上 ESXi 7.0 最新版的要求修改而来,内容如下:

[ req ]
default_bits = 4096 
default_keyfile = rui.key
distinguished_name = req_distinguished_name
encrypt_key = no
prompt = no
string_mask = nombstr
req_extensions = v3_req

[ v3_req ]
basicConstraints = CA:TRUE
keyUsage = digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
# subjectAltName:DNS这里要包含完整域名,可写多个
# IP貌似可不写但没试,最好写上吧,写上之后如果走Nginx反向代理,Nginx所在IP不同也没事
subjectAltName = DNS:<domain1>, DNS:<domain2>, IP:192.168.1.200

[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = BJ
localityName = BeiJing
0.organizationName = VMWare
organizationalUnitName = vCenterInventoryService
commonName = <domain>

然后生成CSR文件 rui.csr 与私钥 rui-orig.key:

openssl req -new -nodes -out rui.csr -keyout rui-orig.key -config openssl.cnf

转换私钥 rui-orig.key 为 RSA 格式:

openssl rsa -in rui-orig.key -out rui.key

接下来根据CSR申请证书,例如我是用namecheap签发证书,这里不再赘述,都有相关教程,没什么错误。此外还要注意一点,签发下来后下载证书文件zip包,网上的教程都说合并 ca-bundle 与 crt 文件是错的,直接使用那里面的 crt 证书即可,更换文件后最好重启下ESXi。然后没什么问题了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注