当前位置: 首页 > 虚拟化 > [企业CA系列二]替换vCenter Server和ESXi证书(混合模式)

[企业CA系列二]替换vCenter Server和ESXi证书(混合模式)

虚拟化 0条评论 2020-5-25 1,417 views

作为企业级产品,VMware所有产品都是要求通过Https访问的,并且产品之间通讯也采用TLS通讯。VMware产品默认采用自签名证书,每次使用浏览器(Firefox可以添加例外,Chrome每次都有提示)打开系统都会增加“两次”跳过验证的点击,我们需要解决这个影响用户体验的证书问题。

另外,不仅仅是VMware的产品,还包括其他的企业级产品也存在相同的问题。

所以,今天我将替换vCenter、ESXi和NSX-T的证书,解决证书警告和信任难题。

企业根CA和中间CA的搭建,请参考[企业CA系列一]搭建企业根CA和中间CA

警告:一定要预先在测试环境进行验证,并考虑好相关联的系统证书信任问题!

警告:强烈建议先在测试环境进行验证,并考虑好相关联的系统证书信任问题!

VMware vCenter证书管理介绍

证书是驱动TLS加密的关键组件,TLS加密保护了与vSphere之间的所有网络通信。在vCenter Server7.0版本简化了证书的管理,在保障安全性的同时,降低了维护难度。

VMware vSphere vCenter Server Appliance (简称为VCSA)是一个基于Linux系统的虚拟应用,包含了PSC(Platform Service Controller)、Postgresql数据库的的系列服务。VMware Certificate Authority(简称VMCA)就是其中不可或缺的一员。vCenter Server 核心的身份认证服务包括以下3个组件:

  1. VMCA,VMware证书管理服务
  2. VMAFD,VMware Authentication Framework Daemon
  3. VMDIR,VMware Directory Service,目录服务

VMware vCenter Server证书管理模式

vSphere 7.0的证书管理经历了几个版本,现在主要有四种方法来管理证书:

  • 完全托管模式:在第一次安装vCenter Server时,系统将使用新的根(Root)CA证书初始化VMCA,并使用VMCA管理集群内的证书(保护ESXi之间通讯和vCenter和ESXi之间通讯)。我们可以通过vCenter页面下载VMCA根证书,并添加到客户端电脑的"企业受信任根证书颁发机构"中,也获得信任。
  • 混合模式:很多时候我们无法让使用者添加VMCA根CA证书到受信任中,在混合模式下,我们可以单独替换vSphere Client证书,改善用户在访问vCenter Web Client时的体验。但是,vSphere管理员仍然需要添加VMCA到本地"企业受信任根证书颁发机构"中,以获得ESXi主机连接信任。
  • 中间CA模式:此模式下,VMCA可以作为企业根(Root)CA的中间CA,vCenter Server依然通过VMCA管理内部使用的证书,由于VMCA由企业根(Root)CA签署,用户只需将企业根(Root)CA添加到"企业受信任的根证书颁发机构"中,即可实现vCenter、ESXi的证书信任。
  • 完全自定义模式:此模式下,不使用VMCA,人工安装和管理所有vSphere集群中的证书,非常耗时、耗力。

从以上四种模式可以看出,"混合模式"是一个均衡的选择,也是官方推荐的方案,"中间CA模式"体验更好,但一定要管理好秘钥,避免安全事件的发生。

同时,我们也要考虑vSphere7的的Kubernetes解决方案,其也是通过VMCA签发的证书,如果使用vSphere With Kubernetes解决方案,推荐采用"中间CA模式"。

本篇我们采用混合模式。在下一篇 [企业CA系列三]替换vCenter和ESXi证书(中间CA模式) 中,我们采用为VMCA签发中间CA证书,并通过VMCA自动管理vSphere7.0环境证书。请根据根据实际需求选择证书管理方式。

前提条件和操作步骤概述

混合模式非常简单,仅需要我们为vSphere Web Client签发证书,并进行替换,请参考 [企业CA系列一] 搭建企业CA;

  1. 搭建企业CA;
  2. 使用企业中间CA签发vCenter Server和ESXi证书;
  3. 替换vCenter Server的机器证书为企业中间CA签发证书;
  4. (可选)替换ESXi主机证书为企业中间CA签发证书;
  5. (可选)修改ESXi证书管理策略;

提示1:vSphere 7.0环境测试,vSphere6.x版本需要参考官方KB进行操作; 提示2:替换证书后,相关与vCenter的连接需要重新配置,已信任新证书;例如:虚拟化备份系统会连接失败。 提示3:强烈建议在测试环境测试后,再进行生产部署;

准备VMware Intermediate Root CA证书配置文件

正如文章前面提高的,直接使用Root CA签发证书是非常危险的,因为私钥有可能被泄漏出去(签发证书时需要使用私钥),所以强烈推荐创建中间CA,并通过中间CA签发证书。

这里我们为VMware的产品证书准备一个中间CA,用于VMware相关产品的证书签发。

/root/intermediate/vmware/config.json相关配置

  • "usages": 描述此证书具备哪些能力;
  • "expiry": 描述证书有效期;
  • "ca_constraint": 声明此证书是一个CA证书,能够签发证书。

/root/intermediate/vmware/vmware-ca-csr.json相关配置

  • "CN": 通用名,一般出现在证书的颁发机构中,需要清晰描述,且不能与根CA证书相同;
  • "key": 加密算法,VMware产品使用RSA 2048;
  • "names": 指定证书相关属性信息;
  • "C": 两位国家代码
  • "L": 城市
  • "O": 组织
  • "OU": 组织单元
  • "ST": 省
cd /root/intermediate/vmware
cat <<EOF > /root/intermediate/vmware/config.json
{
"signing": {
  "default": {
  "usages": ["digital signature","key encipherment","cert sign","crl sign","signing","server auth","client auth"],
  "expiry": "175200h",
  "ca_constraint": {"is_ca": true, "max_path_len": 0, "max_path_len_zero": true}
   }
}
}
EOF

cat <<EOF > /root/intermediate/vmware/vmware-ca-csr.json
{
  "CN": "VMware Intermediate CA",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C":  "CN",
      "L":  "Changchun",
      "O":  "VMware",
      "OU": "DevOps",
      "ST": "Jilin"
    }
  ],
  "ca": {
    "expiry": "175200h"
  }
}
EOF

cfssl genkey -initca vmware-ca-csr.json | cfssljson -bare vmware-intermediate-ca

cfssl sign -ca ../../ca/root-ca.pem -ca-key ../../ca/root-ca-key.pem --config config.json vmware-intermediate-ca.csr | cfssljson -bare vmware-intermediate-ca

cat vmware-intermediate-ca.pem ../../ca/root-ca.pem >> vmware-intermediate-ca-bundle.pem

现在 /root/intermediate/vmware/ 目录下应该已经存在了中间 CA的证书和私钥:

  • vmware-intermediate-ca.pem
  • vmware-intermediate-ca-key.pem
  • vmware-intermediate-ca-bundle.pem (根证书链,后续使用)

根(Root)CA签发完成后,一定要保留好根(Root)CA的私钥。切记!切记!切记!

通过中间CA为vSphere Web Client签发证书

正如前面介绍的,混合模式下,仅需要为vCenter Server 的vSphere Web Client替换签名证书,保证连接vCenter Server控制台的使用。

mgmt-vc-csr.json配置文件说明:

  • CN": "mgmt-nsxma.corp.local"(修改为NSX-T域名)
  • "hosts": ["127.0.0.1","mgmt-vc.corp.local","192.168.100.10"] (修改为NSX-T域名和IP地址)
mkdir -p /root/certs/mgmt-vc
cd /root/certs/mgmt-vc
cat <<EOF > /root/certs/mgmt-vc/config.json
{
"signing": {
  "default": {
  "usages": ["digital signature","key encipherment","signing","server auth"],
  "expiry": "87600h"
   }
}
}
EOF

cat <<EOF > /root/certs/mgmt-vc/mgmt-vc-csr.json
{
  "CN": "mgmt-vc.corp.local",
  "hosts": [
      "127.0.0.1",
      "mgmt-vc0.corp.local",
      "192.168.100.10"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C":  "CN",
      "L":  "Changchun",
      "O":  "VMware",
      "OU": "DevOps",
      "ST": "Jilin"
    }
  ]
}

cfssl gencert -ca=/root/intermediate/vmware/vmware-intermediate-ca.pem  -ca-key=/root/intermediate/vmware/vmware-intermediate-ca-key.pem -config=config.json mgmt-vc-csr.json | cfssljson -bare mgmt-vc

现在 /root/certs/mgmt-vc 目录下应该已经存在了vCenter Server的证书和私钥:

  • mgmt-vc.pem
  • mgmt-vc-key.pem
  • /root/intermediate/vmware/vmware-intermediate-ca-bundle.pem (根证书链,后续使用)

(可选)通过中间CA为ESXi系统签名证书

混合模式下,ESXi主机证书依然由VMCA管理,我们也可以为ESXi生成证书,并需要在修改ESXi主机的证书模式。 修改ESXi证书模式

提示:如果你后期修改使用VMCA自动管理证书,别忘记修改ESXi证书管理模式为默认。

mkdir /root/certs/dc01-esxi-01
cd /root/certs/dc01-esxi-01
cat <<EOF > /root/certs/dc01-esxi-01/config.json
{
"signing": {
  "default": {
  "usages": ["digital signature","key encipherment","signing","server auth"],
  "expiry": "87600h"
   }
}
}
EOF

cat <<EOF > /root/certs/dc01-esxi-01/dc01-esxi-01-csr.json
{
  "CN": "dc01-esxi-01.corp.local",
  "hosts": [
      "127.0.0.1",
      "dc01-esxi-01.corp.local",
      "192.168.100.31"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C":  "CN",
      "L":  "Changchun",
      "O":  "VMware",
      "OU": "DevOps",
      "ST": "Jilin"
    }
  ]
}

cfssl gencert -ca=/root/intermediate/corp/corp-intermediate-ca.pem  -ca-key=/root/intermediate/corp/corp-intermediate-ca-key.pem -config=config.json dc01-esxi-01-csr.json | cfssljson -bare dc01-esxi-01

现在 /root/certs/dc01-esxi-01 目录下应该已经存在了ESXi主机的证书和私钥:

  • dc01-esxi-01.pem
  • dc01-esxi-01-key.pem

替换vSphere Web Client证书(混合模式)

  1. 登录vCenter Web Consle
  2. 进入 菜单->系统管理->证书管理
  3. "Machine_CERT"->操作->导入并替换证书-替换为外部CA证书
  4. "计算机SSL证书":/root/certs/mgmt-vc/mgmt-vc.pem
  5. "受信任的根证书链":/root/intermediate/vmware/vmware-intermediate-ca-bundle.pem
  6. "私钥":/root/certs/mgmt-vc/mgmt-vc-key.pem
  7. 等待vCenter Server重启完成
  8. 通过浏览器打开vCenter Web控制台,验证证书是否替换成功。

提示:只有在客户端计算机已添加企业(Root)CA到"企业受信任根证书颁发机构"后,浏览器才会信任。

(可选)替换ESXi主机证书

  1. 拷贝dc01-esxi-01.pem文件内容覆盖对应ESXi主机的rui.crt文件
  2. 拷贝dc01-esxi-01-key.pem文件内容覆盖对应ESXi主机的rui.key文件
  3. 通过DCUI控制台,重启“Restart Management Agents”
  4. 通过浏览器打开ESXi Host Web控制台,验证证书是否替换成功。
    /etc/vmware/ssl/rui.crt
    /etc/vmware/ssl/rui.key

提示1:如果此时您尚未在客户端电脑添加企业CA根证书信任,那么浏览器依然存在警告。 提示2:更改ESXi证书管理模式

添加企业根证书到Windows/Linux/MacOS的“受信任根证书颁发机构”

参考[企业CA系列一]搭建企业根CA和中间CA

完成

至此,我们完成了vCenter Server和和ESXi证书替换工作,从vSphere的证书管理机制可以看出来,VMware在安全方案做的非常到位,一方面保证安全,另一方面提高易用性。


发表评论

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