主管 使用 TLS 在 主管 与 NSX 之间进行通信。如果已部署具有 NSX 网络堆栈的 主管,则可能需要轮换各种 NSX 证书。

主管 使用的 NSX 证书

具有 NSX 的 WCP 使用两个证书与 NSX 集成:
  • NSX 负载均衡器证书和密钥
  • NSX Manager 证书和密钥
有关这些证书的详细信息,请参见 《NSX 管理指南》中的 用于 NSX 联合的证书
注: 本主题中的信息基于 NSX v3.2。

轮换 NSX 负载均衡器证书和密钥

您可以在 主管 > 证书 > NSX 负载均衡器屏幕上轮换 NSX 负载均衡器 TLS 证书和密钥。
  • 选择操作 > 生成 CSR 以生成证书。
  • 选择操作 > 替换证书以更新证书和密钥。

为每个 NSX Manager 节点生成自签名证书和密钥

主管 使用企业管理员帐户访问 NSX Manager API。如果 NSX Manager 证书过期,主管 将无法访问 NSX。

如果 NSX Manager 证书过期,请查看 主管 日志:
tail -f /var/log/vmware/wcp/wcpsvc.log
您可能会看到类似以下内容的错误:
error wcp [kubelifecycle/nsx_pi.go:47] ... Error creating WCP service principal identity. 
Err: NSX service-wide principal identity creation failed: ... x509: certificate has expired
error wcp [kubelifecycle/controller.go:554] ... Failed to create WCP service PI in NSX.
Err: WCP service principal idenitity creation failed: NSX service-wide principal identity creation failed: 
... x509: certificate has expired

要解决此问题,请更新每个 NSX Manager 节点的证书和密钥。如果使用具有 VIP 地址的 3 节点 NSX 管理集群,请注意 主管 不使用 VIP 地址。这意味着,您需要在每个 NSX Manager 节点上轮换每个证书。无法通过仅替换 VIP 证书来轮换证书。

  1. 要轮换 NSX Manager 节点的证书,请创建一个证书签名请求,并在其中填充以下内容。

    其中:

    • NSX-MGR-IP-ADDRESS 是 NSX Manager IP 地址
    • NSX-MGR-FQDN 是 NSX Manager FQDN 或 IP 地址
    nsx-mgr-01-cert.cnf
    [ req ]
    default_bits = 2048
    default_md = sha256
    prompt = no
    distinguished_name = req_distinguished_name
    x509_extensions = SAN
    req_extensions = v3_ca
    
    [ req_distinguished_name ]
    countryName = US
    stateOrProvinceName = California
    localityName = CA
    organizationName = NSX
    commonName = NSX-MGR-IP-ADDRESS  #CAN ONLY USE IF SAN IS ALSO USED
    
    [ SAN ]
    basicConstraints = CA:false
    subjectKeyIdentifier = hash
    authorityKeyIdentifier=keyid:always,issuer:always
    
    [ v3_ca ]
    subjectAltName = DNS:NSX-MGR-FQDN,IP:NSX-MGR-IP-ADDRESS  #MUST USE
    
    例如:
    [ req ]
    default_bits = 2048
    default_md = sha256
    prompt = no
    distinguished_name = req_distinguished_name
    x509_extensions = SAN
    req_extensions = v3_ca
    
    [ req_distinguished_name ]
    countryName = US
    stateOrProvinceName = California
    localityName = CA
    organizationName = NSX
    commonName = 10.197.79.122
    
    [ SAN ]
    basicConstraints = CA:false
    subjectKeyIdentifier = hash
    authorityKeyIdentifier=keyid:always,issuer:always
    
    [ v3_ca ]
    subjectAltName = DNS:10.197.79.122,IP:10.197.79.122
  2. 使用 OpenSSL 生成 SSL 证书和私钥。
    openssl req -newkey rsa -nodes -days 1100 -x509 -config nsx-mgr-01-cert.cnf -keyout nsx-mgr-01.key -out nsx-mgr-01.crt
    
  3. 运行命令后,确认您看到以下输出。
    Generating a 2048 bit RSA private key
    ...............+++
    ................+++
    writing new private key to 'nsx-mgr-01.key'
    
  4. 您应看到 3 个文件:初始签名请求、运行签名请求生成的证书和私钥。
  5. 运行以下命令以验证证书和私钥。
    openssl x509 -in nsx-mgr-01.crt -text -noout
  6. 如果使用多节点 NSX 管理集群,请对每个 NSX Manager 节点重复此过程。相应更改证书签名请求中的 IP 地址和 FQDN 以及输出文件名。

将 SSL 证书和私钥导入到 NSX-T 管理控制台

完成以下步骤,将每个 NSX Manager 节点证书和私钥导入到 NSX。如果本地保存 nsx.crtnsx.key 文件,则可以将其上载到 NSX,也可以复制/粘贴内容。
  1. 登录到 NSX 管理控制台,然后导航到系统 > 证书页面。
  2. 单击导入 > 导入证书
    注: 由于您生成了自签名证书,因此请务必选择 导入证书,而不是 导入 CA 证书
  3. 为证书和密钥对输入描述性名称,例如 nsx-mgr-01-cert-and-key
  4. 浏览并选择证书文件,或者复制/粘贴其内容,包括页眉和页脚。

    例如:

    -----BEGIN CERTIFICATE-----
    MIID+zCCAuOgAwIBAgIUCfXaWxNwXvrEFQbt+Dvvp9C/UkIwDQYJKoZIhvcNAQEL
    BQAwVTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExCzAJBgNVBAcM
    ...
    FGlnyT4vxpa2TxvXNTCuXPV9z0VtVBF2QpUJluGH7W1i2wUnApCCXhItcBkfve0f
    pCi9YoRoUT8fuMBYo7sL
    -----END CERTIFICATE-----
  5. 浏览并选择密钥,或者复制/粘贴其内容,包括页眉和页脚。

    例如:

    -----BEGIN PRIVATE KEY-----
    MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5GNlUSYHa1p+E
    XuOGAsIgiFxUnerRYNm2ARMqRb/xKK6R4xgZhBmpmikpE90vQibvouHqnL13owq7
    ...
    OzbnwMCUI2TeY1iJNx3HNKUrdLvrr8CMh7Looe0L4/2j7ygew2x2C5m272SCJYs/
    ly+bOXEYaH4/ORHbvvr0jQ==
    -----END PRIVATE KEY-----
  6. 服务证书选项选择
  7. 输入证书和密钥对的描述,例如 Cert and Private Key for NSX Manager Node 1
  8. 单击导入
  9. 对每个 NSX Manager 证书和密钥对重复此过程。

使用 NSX API 注册 NSX Manager 证书

将证书和密钥上载到 NSX Manager 后,使用 NSX API 进行注册。另请参见 《NSX 管理指南》中的 导入和替换证书
  1. 在 NSX Manager 中,选择系统 > 证书
  2. 在 ID 列中,选择要注册的证书的 ID,然后从弹出窗口中复制该证书 ID。
  3. 运行以下 API 调用以列出证书。获取要更新的每个证书的证书节点 ID。
    GET https://NSX-MGR-IP-or-FQDN/api/v1/trust-management/certificates
  4. 运行以下 API 调用以验证证书。
    GET https://NSX-MGR-IP-or-FQDN/api/v1/trust-management/certificates/<cert-id>?action=validate
    例如:
    https://10.19.92.133/api/v1/trust-management/certificates/070bae44-7548-45ff-a884-578f079eb6d4?action=validate
  5. 运行以下 API 调用以替换 NSX Manager 节点的证书:
    POST https://NSX-MGR-IP-or-FQDN/api/v1/trust-management/certificates/<cert-id>?
    action=apply_certificate&service_type=API&node_id=<node-id>
    例如:
    POST https://10.19.92.133/api/v1/trust-management/certificates/070bae44-7548-45ff-a884-578f079eb6d4?
    action=apply_certificate&service_type=API&node_id=e61c7537-3090-4149-b2b6-19915c20504f
  6. 如果使用多节点 NSX 管理集群,请对每个 NSX Manager 节点重复证书替换过程。
  7. 完成后,删除您替换的每个已过期的证书。您可以使用 NSX Manager 界面或 NSX API 执行此操作。
    例如:
    https://NSX-MGR-IP-or-FQDN/api/v1/trust-management/certificates/<cert-id>