vSphere with Tanzu で自己署名の vip.crt 証明書を手動で置き換える方法
search cancel

vSphere with Tanzu で自己署名の vip.crt 証明書を手動で置き換える方法

book

Article ID: 433095

calendar_today

Updated On:

Products

VMware vSphere Kubernetes Service

Issue/Introduction

免責事項: これは英文の記事「Manual method to replace the self-signed vip.crt certificate in vSphere with Tanzu」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。


1. /etc/vmware/wcp/tls/vip.crt 証明書が期限切れと表示され、Supervisor Cluster API エンドポイントに接続できない。 

2. vSphere Client で ワークロード管理 > スーパーバイザー > "スーパーバイザー名" > 構成 > 証明書 にて「ワークロード プラットフォームの管理」の証明書有効期限が切れている。

3. スーパーバイザーにログインしようとすると、次のエラーが表示される。

Get "https://##.##.##.##:443/api/v1/namespaces/kube-public/configmaps/pinniped-info": tls: failed to verify certificate: x509: certificate is valid for ###.###.###.###, not ##.##.##.##

4. “echo | openssl s_client -showcerts -connect <SUPERVISOR_IP>:443 2>/dev/null | openssl x509 -noout -text “ を使用して証明書を確認すると、 SAN に古いスーパーバイザーが登録されている。

Cause

/etc/vmware/wcp/tls/vip.crt にある自己署名証明書の有効期限が切れており、自動更新プロセスが開始されていない。

この TLS 証明書は nginx プロキシによって提供され、ワークロードネットワーク上の各 CP VM の前段で動作します。有効期間は 1 年間です。wcpsvc が有効期間の 50%(つまり 6 ヶ月)を超えたことを検知すると、vip.crt の自己署名証明書が自動的に更新されるようになっています。

Resolution

1.  スーパーバイザーノードのコントロールプレーン VM から vip.crt を確認する 

    • TLS エンドポイント証明書の有効期限を確認する

# find / -type f \( -name "*.cert" -o -name "*.crt" \) -print 2>/dev/null | egrep -v 'ca.crt$|ca-bundle.crt$|kubelet\/pods|var\/lib\/containerd|run\/containerd' | xargs -L 1 -t -i bash -c 'openssl x509 -noout -text -in {}|grep After'

bash -c openssl x509 -noout -text -in /etc/vmware/wcp/tls/vip.crt|grep After
Not After : Dec 13 03:59:22 2xxx GMT

    • 証明書が自己署名型かカスタム証明書かを確認してください。以下は自己署名型証明書の例です

# openssl x509 -in /etc/vmware/wcp/tls/vip.crt -text | grep CN

Issuer: CN=CA, DC=vsphere, DC=local, C=US, ST=California, O=vcxxxx.corp.example.org, OU=VMware Engineering
Subject: OU=vcxxxx.corp.example.org, CN=kube-apiserver-domain-c7


2. vCenter Server で新しい vip.crt ファイルを生成する

    • vSphere Client で、スーパーバイザークラスタに移動し、「ワークロード プラットフォームの管理」で アクション > CSR を生成 を選択する。
    • CSR が生成されたら、「コピー」をクリックする。
    • vCenter に SSH で接続し、vi で新しいファイル「cert.csr」を作成して、コピーした CSR の内容をペーストして保存する。

# vi cert.csr

    • 以下のコマンドで、新しい証明書を生成する。

# /usr/lib/vmware-vmca/bin/certool --gencertfromcsr --csrfile cert.csr --cert vip-renew.crt


3. Replace VIP certificate from vCenter Server GUI

    • 生成された新しい証明書を表示させ、内容をコピーする。

# cat vip-renew.crt

    • vSphere Client に戻り、「ワークロード プラットフォームの管理」で アクション > 証明書の置き換え を選択する
    • コピーした新しい証明書の内容をペーストして、「置き換え」をクリックして証明書を置き換える。

Additional Information

vip.crt にカスタム署名付き証明書が使用されている場合で、以下のドキュメントに従って更新を行うには、その証明書が CA によって署名されている必要があります。

スーパーバイザー API エンドポイントに安全に接続するための VIP 証明書の置き換え