激活 NSX Network Detection and Response 时预检查失败。

问题

nsx-ndr-precheck 作业的日志中包含以下错误:

2022-10-04 19:43:44,954 - nsx_api_client.nsx_api_client - ERROR - communication error: HTTPSConnectionPool(host='external-nsx-manager', port=443): Max retries exceeded with url: /api/v1/licenses (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))

在这些日志中,与主机 "external-nsx-manager" 的连接存在特定问题并显示错误字符串 "CERTIFICATE_VERIFY_FAILED"

要了解有关如何访问这些日志的更多信息,请参阅 NSX Network Detection and Response 激活预检查失败的步骤 4 b。

原因

出现此问题的原因是,NSX Manager 集群的证书设置存在问题。

解决方案

  1. 要解决此问题,请确保您已为 NSX Manager 集群中的每个节点以及该集群本身正确配置证书。具体而言,请验证以下各项:
    • 每个证书都有一个与其用于的完全限定域名相匹配的公用名称。
    • 任何两个证书所使用的公用名称都不相同。
  2. 要验证证书设置是否正确,建议使用以下两种方法。
    1. 使用 Web 浏览器:

      在 Web 浏览器中,使用 NSX Manager 节点的完全限定域名分别访问每个节点,并且还访问集群域名。在每个域中,使用浏览器工具查看证书信息,尤其是证书的公用名称。确认公用名称与浏览器 URL 栏中访问的域名完全匹配。

    2. 使用命令行工具:
      在 Shell 中,对于任一 NSX Manager 节点,运行以下命令:
      • 从 Kubernetes 平台中提取受信任的 CA 证书。
      napp-k get secret/nsx-ndr-precheck-ccpchk-nsx-manager-truststore   -o
                        jsonpath='{.data.ca\.crt}'| base64 -d > /tmp/ca.crt
      该命令会将 Kubernetes 平台中的受信任证书颁发机构提取到 /tmp/ca.crt 文件中。
      • 查看受信任证书的 subject
      openssl storeutl -noout -certs --text /tmp/ca.crt |grep "Subject:" 
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,   CN=k8s-platform-ca
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p01.example.com
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p02.example.com
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p03.example.com
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p01.example.com

      该命令将解析这些证书并输出每个证书的 subject。该命令输出中还包含证书的公用名称,在提供的示例中,该名称位于 "CN=" 后面。

      确认显示的公用名称都不相同,并且它们与 NSX Manager 集群的节点以及该集群本身的预期完全限定域名相匹配。

      在前面的示例中,公用名称 vmnsxt-mgmt-p01.example.com 出现了两次。这说明示例设置配置有误。NSX Manager 集群的完全限定域名为 vmnsxt-mgmt.example.com,但证书使用了错误的公用名称 vmnsxt-mgmt-p01.example.com