時々テスト用に起動することがあるNutanix環境がある。
テスト用なのでNutanix Community Editionで構築したのだがしばらくアップデートが出てなかったので結構古い。
確認することがあったのでWindows仮想マシンとLinux仮想マシンを作って、Windows側にNutanix Guest Toolsをインストールしてみたところエラーが・・・
Summary
Client certificates for VM <仮想マシン名> with uuid 33dd4645-3dcf-4efc-b837-0b1cb3a8d7d9 are expiring in -19717 days and need to be regenerated.Upon Certificate expiry, the CVM-Guest VM communication will be broken.
Possible Cause
Description
NGT Client certificates have definite expiry period of 1000 days based on ISO standards.
Recommendation
NGT Client certificates need to be regenerated on the guest VMs. Refer to KB 10075 for further details
KB 10075「NCC Health Check: ngt_client_cert_expiry_check」
AOS 5.19.1以降と、AOS 5.19.1より前とで対処が違う模様。
2020.09.16はAOS5.18らしいので、より前なので対処策は KB-8120のようなのだが、Community Edition権限では読めない・・・
で・・・アップデートが出てないと思ってたNutanix Community Editionについて2023年3月に新しいバージョンが出ていたとは・・・
smzklab「[2023令和最新版]Nutanix Community Edition 2.0」
ダウンロード場所「Download Community Edition」
それはさておき、問題の対処方法を捜索
インフラ屋とアプリ屋のあいだ「NGTによる仮想マシンの識別方法と証明書の更新方法について」を見ると、期限が切れてる場合はNGTとの通信が出来ていない模様
しかしうちの環境だと「NGT Enabled:true」で「Communication Link Active:true」とNGTと通信はできている模様
nutanix@NTNX-20190b89-A-CVM:172.17.44.22:~$ ncli ngt get vm-id=<UUID>
VM Id : <UUID>
VM Name : <仮想マシン名>
NGT Enabled : true
Tools ISO Mounted : false
Vss Snapshot : true
File Level Restore : false
Communication Link Active : true
nutanix@NTNX-20190b89-A-CVM:172.17.44.22:~$
とりあえず、書いてある証明書更新を実施してみる
「ncli vm list」でUUID確認
「ncli ngt get vm-id=<UUID>」で現状のステータス確認
「nutanix_guest_tools_cli query_vm_tools_entity <UUID>」でNGTと通信して内容が取れるか確認(うちの環境では取れた)
いまの環境のNGT versionは「ngt_version: “2.0”」となっていた。
「nutanix_guest_tools_cli delete_vm_tools_entity <UUID>」で登録を削除。最後は「result_vec: kNoError」と出る
「nutanix_guest_tools_cli query_vm_tools_entity <UUID>」でNGTと通信して内容を確認すると、ログが流れたあとjsonっぽい出力はなくすぐに「result_vec: kNonExistent」と出たので登録は削除されている
「nutanix_guest_tools_cli create_vm_tools_entity <UUID>」で登録を実施。最後は「result_vec: kNoError」と出る
「nutanix_guest_tools_cli query_vm_tools_entity <UUID>」でNGTと通信して内容を確認すると、ログが流れたあとjsonっぽい出力があれば再登録
Nutanix管理画面からMount Nutanix Guest Toolsを実行した後、仮想マシンを再起動、とあるので、それを行う(nutanix_guest_tools_cli mount_guest_tools <UUID>でもいいらしい)
仮想マシン再起動後、「ncli ngt get vm-id=<UUID>」を実行し、NGTの状態確認
結果変わらず。
今回、Linux仮想マシンだったので/usr/local/nutanix/ngt/config/にあるpem拡張子のファイルが更新されている。
# ls -l /usr/local/nutanix/ngt/config/
合計 20
-rwxr-x---. 1 root root 3988 12月 28 15:50 ca-cert.pem
-rwxr-x---. 1 root root 1854 12月 28 15:50 client-cert.pem
-rwxr-x---. 1 root root 1704 12月 28 15:50 client-key.pem
-r-xr-x---. 1 root root 118 12月 28 15:50 ngt_config.json
-rw-r--r--. 1 root root 0 12月 28 14:53 ngt_marker
-r-xr-x---. 1 root root 379 12月 28 14:53 script_execution_config.json
#
client-cert.pemを確認すると、発行日 2023/12/28 と更新されていることを確認
# openssl x509 -text -noout -in /usr/local/nutanix/ngt/config/client-cert.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4105 (0x1009)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, ST = CA, O = Nutanix, OU = NGT, CN = intermediate-ca
Validity
Not Before: Dec 28 06:45:42 2023 GMT
Not After : Sep 23 06:45:42 2026 GMT
Subject: C = US, ST = CA, L = San Jose, O = Nutanix, OU = Nutanix Guest Tools, CN = ngt-uuid=bbcae76c-bcc2-4da5-bb80-1ed6fb2d6045
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
<略>
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Client, S/MIME
Netscape Comment:
OpenSSL Generated Client Certificate
X509v3 Subject Key Identifier:
58:DD:30:0E:E9:FD:5E:5C:A0:68:5B:13:B4:34:4E:B5:10:43:D5:D1
X509v3 Authority Key Identifier:
16:EE:D1:30:0D:AC:E9:CE:CA:E9:69:D8:F1:8A:B6:7D:2B:46:45:F6
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication, E-mail Protection
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
<略>
#
ca-cert.pem 側は2019/11/12発行だけど、有効期限が2029年までになっている状態
# openssl x509 -text -noout -in /usr/local/nutanix/ngt/config/ca-cert.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4096 (0x1000)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, ST = CA, L = San Jose, O = Nutanix, OU = NGT, CN = root-ca
Validity
Not Before: Nov 12 08:12:48 2019 GMT
Not After : Nov 9 08:12:48 2029 GMT
Subject: C = US, ST = CA, O = Nutanix, OU = NGT, CN = intermediate-ca
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
<略>
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
16:EE:D1:30:0D:AC:E9:CE:CA:E9:69:D8:F1:8A:B6:7D:2B:46:45:F6
X509v3 Authority Key Identifier:
AA:F6:89:7E:3B:F9:42:7E:15:D0:42:27:54:A8:65:2B:3E:5C:7F:B6
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
<略>
#
….ca-certの有効期限が10年であることが問題?
そうするとNutanix側のCA証明書を再生成する必要があるのが「AOS < 5.19.1: Rrefer to KB 8120 for instructions on re-generating the certificates.」の内容ということなのか?
とりあえずよくわからないけど、NGTが使えていないわけではないので一旦放置、とした