当前位置: 首页 > 虚拟化 > [企业CA系列四]替换NSX-T证书为企业中间CA颁发证书

[企业CA系列四]替换NSX-T证书为企业中间CA颁发证书

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

NSX-T作为VMware虚拟化三件套的核心组件,已经被教育、企业和金融用户广泛使用,能够为企业提供一个网络硬件解耦、功能强大的网络和安全平台,帮企业提高网络传输效率和安全性的同时,降低了网络运维压力。

前两篇文章,我们替换了vCenter和ESXi的证书,本片文章,将替换NSX-T证书为企业中间CA签发证书,有以下两个目标:

  • 登录NSX-T管理控制台无证书信任提示
  • 以后可以为NSX-T的负载均衡颁发证书,用于在企业内部使用HTTPS服务(例如:vRA8负载均衡、Horizon负载均衡、服务器负载均衡)

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

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

前提条件和操作步骤概述

替换NSX-T的Http服务证书和vCenter Server的混合模式基本一致,大致流程如下:

  1. 搭建企业CA;
  2. 使用企业中间CA签发NSX-T Http服务证书;
  3. 登录NSX-T管理页面,添加企业根CA证书和企业中间CA证书;
  4. 添加NSX-T Http服务证书;
  5. 通过Rest Api替换NSX-T Http服务证书;

通过中间CA为NSX-T Manager系统签名证书

先准备NSX-T证书所需的配置文件和证书签名文件,需要修改以下内容:

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

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

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

cat mgmt-nsxma.pem ../../intermediate/corp/corp-intermediate-ca.pem ../../ca/root-ca.pem >> mgmt-nsx-cert-chain.pem

替换NSX-T证书

导入根CA

  1. 系统->证书->导入->导入CA证书
  2. 名称:Corp Root CA
  3. 证书内容:/root/ca/root-ca.pem
  4. 服务证书:否

导入中间CA

  1. 系统->证书->导入->导入CA证书
  2. 名称:Corp intermediate CA
  3. 证书内容:/root/intermediate/corp/corp-ca.pem
  4. 服务证书:否

导入mgmt-nsxma证书

  1. 系统->证书->导入->导入证书
  2. 名称:mgmt-nsxma
  3. 证书内容:mgmt-nsx-cert-chain.pem
  4. 私钥:/root/certs/mgmt-nsxma/mgmt-nsxma-key.pem
  5. 服务证书:否
  6. 等待NSX-T http服务重启完成
  7. 通过浏览器打开NSX-T Web控制台,验证证书是否替换成功。

提示:如果此时我们尚未在客户端电脑添加企业CA根证书信任,所以浏览器可能依然存在警告。

替换证书

替换证书使用Curl或者Postman工具均可,这次不再详细描述工具使用方法。首先需要获得证书的id,您可以通过NSX-T 证书页面的ID列获取。

提示1:在使用Curl工具时,如果密码中包含特殊字符,需要使用"\"转译。 提示2:替换为预替换证书ID。

curl -k -u admin:VMware1\!VMware1\! -H "Content-Type: application/json" -X POST "https://mgmt-nsxma.corp.local/api/v1/node/services/http?action=apply_certificate&certificate_id=<cerficate id form nsx-t web ui>"

(NSX-T 3.0)修改全局安全策略

在NSX-T 3.0中对证书增加了安全验证要求,会导致出现应用证书失败的问题,错误提示如下:

{
  "error_code": 36432,
  "error_message": "Certificate validation failed. Reason : Certificate was rejected: CRL check failed: No CDP specified in the certificate for CN=mgmt-nsxma06.corp.local,OU=DevOps,O=VMware,L=Changchun,ST=Jilin,C=CN",
  "module_name": "node-services"
}

我们可以通过修改NSX-T 3.0的默认全局安全策略,跳过CRL检测。首先,使用Postman工具通过get方法获取NSX-T全局安全配置,请求URL如下:

https://mgmt-nsxma.corp.local/api/v1/global-configs/SecurityGlobalConfig

然后,拷贝返回内容,并修改 "crl_checking_enabled": false

{
  "crl_checking_enabled": false,
  "ca_signed_only": false,
  "resource_type": "SecurityGlobalConfig",
  "id": "e1ed97b2-6a79-4972-a936-9b39b26ef285",
  "display_name": "e1ed97b2-6a79-4972-a936-9b39b26ef285",
  "_create_user": "system",
  "_create_time": 1590306110635,
  "_last_modified_user": "admin",
  "_last_modified_time": 1590324801014,
  "_system_owned": false,
  "_protection": "NOT_PROTECTED",
  "_revision": 4
}

最后,通过put方法更新全局安全配置。

提示:如何使用Postman和curl这里不进行介绍了,大家可以查看官方文档或网络上进行搜索。

登录NSX-T Manager验证证书替换结果

完成

至此,我们完成了NSX-T Manager的Http服务证书替换工作。目前我们已经完成了VMware三个底层产品(vSphere、vSAN、NSX)的证书替换工作,后续将继续发布如何替换VMware其他产品证书的系列文章。


发表回复

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