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的混合模式基本一致,大致流程如下:
- 搭建企业CA;
- 使用企业中间CA签发NSX-T Http服务证书;
- 登录NSX-T管理页面,添加企业根CA证书和企业中间CA证书;
- 添加NSX-T Http服务证书;
- 通过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
- 系统->证书->导入->导入CA证书
- 名称:Corp Root CA
- 证书内容:/root/ca/root-ca.pem
- 服务证书:否
导入中间CA
- 系统->证书->导入->导入CA证书
- 名称:Corp intermediate CA
- 证书内容:/root/intermediate/corp/corp-ca.pem
- 服务证书:否
导入mgmt-nsxma证书
- 系统->证书->导入->导入证书
- 名称:mgmt-nsxma
- 证书内容:mgmt-nsx-cert-chain.pem
- 私钥:/root/certs/mgmt-nsxma/mgmt-nsxma-key.pem
- 服务证书:否
- 等待NSX-T http服务重启完成
- 通过浏览器打开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其他产品证书的系列文章。