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. 証明書の設定が正しいことを確認するには、次の 2 つの方法を推奨します。
    1. Web ブラウザを使用する:

      Web ブラウザで完全修飾ドメイン名を使用して各 NSX Manager ノードにアクセスします。さらに、クラスタ ドメイン名にもアクセスします。これらの各ドメインで、ブラウザ ツールを使用して証明書情報(特に証明書の[コモンネーム])を確認します。ブラウザの URL バーで、アクセスしたドメイン名とコモンネームが完全に一致していることを確認します。

    2. コマンド ライン ツールを使用する:
      シェルで、 NSX Manager ノードの 1 つに対して、次のコマンドを実行します。
      • 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 が 2 回出てきます。サンプルの設定は正しく構成されていません。NSX Manager クラスタの完全修飾ドメイン名は vmnsxt-mgmt.example.com ですが、証明書で誤ったコモンネーム vmnsxt-mgmt-p01.example.com が使用されています。