激活 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 集群的证书设置存在问题。
解决方案
- 要解决此问题,请确保您已为 NSX Manager 集群中的每个节点以及该集群本身正确配置证书。具体而言,请验证以下各项:
- 每个证书都有一个与其用于的完全限定域名相匹配的公用名称。
- 任何两个证书所使用的公用名称都不相同。
- 要验证证书设置是否正确,建议使用以下两种方法。
- 使用 Web 浏览器:
在 Web 浏览器中,使用 NSX Manager 节点的完全限定域名分别访问每个节点,并且还访问集群域名。在每个域中,使用浏览器工具查看证书信息,尤其是证书的公用名称。确认公用名称与浏览器 URL 栏中访问的域名完全匹配。
- 使用命令行工具:
在 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
。
- 使用 Web 浏览器: