La vérification préalable échoue lors de l'activation de NSX Network Detection and Response.

Problème

Les journaux de la tâche nsx-ndr-precheck contiennent l'erreur suivante :

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)'),))

Dans ces journaux, le problème spécifique se manifeste avec la chaîne d'erreur "CERTIFICATE_VERIFY_FAILED" dans la connexion à l'hôte "external-nsx-manager".

Pour en savoir plus sur l'accès à ces journaux, reportez-vous à l'étape 4b de Échec de la vérification préalable à l'activation de NSX Network Detection and Response.

Cause

Ce problème se produit en raison de problèmes avec la configuration du certificat pour le cluster NSX Manager.

Solution

  1. Pour résoudre ce problème, assurez-vous d'avoir configuré correctement les certificats pour chaque nœud du cluster NSX Manager et pour le cluster lui-même. Vérifiez spécifiquement :
    • Chaque certificat a un nom commun qui correspond au nom de domaine complet pour lequel il est utilisé.
    • Deux certificats n'utilisent pas le même nom commun.
  2. Pour vérifier que la configuration du certificat est correcte, voici les deux approches suggérées.
    1. Utilisation d'un navigateur Web :

      À l'aide d'un navigateur Web, visitez chacun des nœuds NSX Manager individuellement à l'aide de leurs noms de domaine complets, et visitez également le nom de domaine du cluster. Pour chacun de ces domaines, utilisez les outils du navigateur et affichez les informations du certificat et en particulier le Nom commun du certificat. Vérifiez que le nom commun correspond exactement au nom de domaine visité dans la barre d'URL du navigateur.

    2. Utilisation des outils de ligne de commande :
      Dans un shell, pour l'un des nœuds NSX Manager, exécutez les commandes suivantes :
      • Extrayez le certificat d'autorité de certification approuvée de la plate-forme Kubernetes.
      napp-k get secret/nsx-ndr-precheck-ccpchk-nsx-manager-truststore   -o
                        jsonpath='{.data.ca\.crt}'| base64 -d > /tmp/ca.crt
      La commande extrait les autorités de certification approuvées de la plate-forme Kubernetes dans le fichier /tmp/ca.crt.
      • Affichez le subject des certificats approuvés.
      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

      La commande analyse ces certificats et imprime les subject de chaque certificat. La commande inclut également le nom commun du certificat, qui est après "CN=" dans l'exemple.

      Vérifiez que les noms communs affichés sont tous différents et correspondent aux noms de domaine complets attendus pour les nœuds du cluster NSX Manager et pour le cluster lui-même.

      Dans l'exemple précédent, le nom commun vmnsxt-mgmt-p01.example.com se produit deux fois. L'exemple de configuration n'est pas correctement configuré. Le nom de domaine complet du cluster NSX Manager est vmnsxt-mgmt.example.com, mais le certificat utilise un nom commun incorrect vmnsxt-mgmt-p01.example.com.