一、安装配置证书颁发机构
前提:Active Directory 证书服务需要安装在Windows Server2016或者2019的版本上(其他版本未做测试)并且计算机需要加入到域。如果不具备相应环境请参考NSX自签名证书的方式添加证书。
1.安装证书服务
打开服务器管理器并点击右上角管理菜单中的添加角色和功能,按照如下示例完成证书颁发机构和证书颁发机构Web注册两项角色的安装。
2.配置证书颁发机构
注意:请勿选择SHA1哈希算法,因为NSX-T3.x中不支持该算法!
根据安全要求设置CA证书有效期,推荐设置为5年
3.配置NSX证书模板
打开服务器管理器,打开右上角工具菜单>证书颁发机构
选择证书模板右键点击管理
找到Web服务器证书模板,右键选择复制模板
配置兼容性设置
常规选项卡更改模板名称及证书有效期
扩展选项卡中选中基本约束点击编辑,勾选启用此扩展,配置完成后确定退出
关闭窗口返回证书颁发机构
选中证书模板右键点击新建>要颁发的证书模板
打开的窗口中选中刚才创建的模板并点击确定
至此完成了证书服务的安装配置以及NSX证书模板的添加。
二、申请证书
1.生成证书签名请求文件
创建.cnf文件
首先为每个管理节点以及管理集群VIP创建.cnf文件通过OpenSSL基于.cnf文件生成相应的CSR文件,后续使用CSR文件向证书颁发机构申请相应的证书并导入到NSX Manager中完成替换。
示例:NSX管理节点一(nsxmgr01.cnf)
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
countryName = 填写国家
stateOrProvinceName = 填写 州或省名称
localityName = 填写地区
organizationName = 填写组织机构
commonName = NSX-Manager01
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = NSX-Manager01
示例:NSX管理节点二(nsxmgr02.cnf)
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
countryName = 填写国家
stateOrProvinceName = 填写 州或省名称
localityName = 填写地区
organizationName = 填写组织机构
commonName = NSX-Manager02
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = NSX-Manager02
示例:NSX管理节点三(nsxmgr03.cnf)
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
countryName = 填写国家
stateOrProvinceName = 填写 州或省名称
localityName = 填写地区
organizationName = 填写组织机构
commonName = NSX-Manager03
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = NSX-Manager03
示例:NSX管理集群VIP(nsxmgr.cnf)
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
countryName = 填写国家
stateOrProvinceName = 填写 州或省名称
localityName = 填写地区
organizationName = 填写组织机构
commonName = NSX-Manager
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = NSX-Manager
生成.csr证书请求文件及密钥
将.cnf文件上传至任意管理节点,使用OpenSSL对应.cnf文件生成.csr和.key文件
示例:
openssl req -nodes -newkey rsa:2048 -keyout nsxmgr01.key -config nsxmgr01.cnf -out nsxmgr01.csr
openssl req -nodes -newkey rsa:2048 -keyout nsxmgr02.key -config nsxmgr02.cnf -out nsxmgr02.csr
openssl req -nodes -newkey rsa:2048 -keyout nsxmgr03.key -config nsxmgr03.cnf -out nsxmgr03.csr
openssl req -nodes -newkey rsa:2048 -keyout nsxmgr.key -config nsxmgr.cnf -out nsxmgr.csr
2.申请证书文件
使用浏览器登录到CA Web注册页面http://<ip>/certsrv/
点击下载 CA 证书、证书链或 CRL
选中Base64编码并点击下载CA证书
将下载好的CA证书保存待稍后使用
返回首页点击申请证书 >高级证书申请
将.scsr文件中的内容粘贴至保存的请求文本框中,证书模板选择之前创建的NSX证书模板后点击提交申请
选择Base 64 编码并点击下载证书
此时将得到一个.cer证书文件,重复相同步骤分别申请并下载对应的其他证书文件,注意使用对应的文件名重命名下载的证书文件以便区分
三、替换NSX证书
1.导入证书
从浏览器中,使用管理员特权登录到 NSX Manager,网址为 https://<nsx-manager-ip-address>,打开系统>设置>证书页面
首先导入CA根证书
点击导入>导入CA证书
输入CA根证书的名称,将直线下载的CA证书内容复制到证书内容文本框或者点击浏览打开并上传CA证书文件
关闭服务证书并单击导入按钮
依次分别导入三个NSX-T管理节点和管理集群VIP证书
点击导入>导入证书
注意!证书内容:按以下顺序填入完整的证书链:
—–BEGIN CERTIFICATE—–
NSX-T Manager/Node cert
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
Root CA Cert
—–END CERTIFICATE—–
证书服务:否
重复上述步骤分别导入三个NSX-T管理节点及管理集群VIP证书,证书导入完成请在证书列表中检查确认。
2.替换(激活)证书
参考: VMware NSX-T Data Center 产品文档中的替换证书章节
新的证书上传至NSX-T Manager后需要借助 REST API 来完成替换和激活新的证书
获取证书ID:
从浏览器中,使用管理员特权登录到 NSX Manager,在证书页面,证书列表中对应需要激活的证书点击ID单元格可查看到完整的证书ID
证书的替换可以使用Curl(API)调试工具或者以root用户登录到管理节点运行命令发送POST请求来完成
替换之前可通过进行以下 API 调用来验证证书是否有效:
GET https://<nsx-mgr>/api/v1/trust-management/certificates/<certificate-id>?action=validate
替换管理节点证书:
curl -k -u <user>:<password> -X POST "https://<nsxt-fqdn>/api/v1/node/services/http?action=apply_certificate&certificate_id=<certificate-id>"
替换管理集群VIP证书:
curl -k -u <user>:<password> -X POST "https://<NSX_Manager>/api/v1/cluster/api-certificate?action=set_cluster_certificate&certificate_id=<certificate-id>"
要替换 NSX 联合的主体身份证书(暨LOCAL_MANAGER证书),请使用以下 API 调用:POST https://<nsx-mgr>/api/v1/trust-management/certificates?action=set_pi_certificate_for_federation。
例如:
POST https://<nsx-mgr>/api/v1/trust-management/certificates?action=set_pi_certificate_for_federation
{ "cert_id": "<id>",
"service_type": "LOCAL_MANAGER" }
以自签名方式替换NSX-T证书请参考连接: