Straypenguins-Tips-Inventory

vCSA 証明書 更新手順

🧭 全体方針

更新前チェックリスト

更新後チェックリスト

必要なすべての証明書の更新が終わったら、 基本的なことですが、vCenter Serverおよび証明書の健全性の確認が必要です。


🛠️ vCertの手順

vCert.py は、基本的にインタラクティブメニューで使うように作られています。コマンドラインでのオペレーションの決め打ちは --run オプションに続けてディレクトリ配下の yaml ファイルパスを指定する形式のためタイプ数が多くなりがちで、それ以外のオプションもかなり限られています。 ただし、時と場合によっては、--run でのオペレーション決め打ちが適していることもあります。別紙 vcsa-cert-list-chart.md の表 vCert.py direct operation arguments に、オペレーション区分毎の yaml ファイルパスをまとめてありますので、ご活用ください。

手順

  1. vCert.pyの起動:
    ただ簡潔に ./vCert.py を実行してください。--user <user@vphere> --password <pswd> を加えると、特権作業の度に求められる認証が省略できます。

  2. 証明書状態の確認:
    メインメニューで”1. Check current certificate status”を選択し、状態を確認します。

  3. まずは自動一括更新を試してみる:
    メインメニューで”6. Reset all certificates with VMCA-signed certificates”を選択します。

  4. サービス再起動プロンプト:
    “Restart VMware services [N]: “の問いには、成功/失敗に関わらず”N”(デフォルト)で応答します。

  5. vCert.py実行後のログ確認(より慎重にやる場合):
    • /var/log/vmware/vmcad//var/log/vmware/sso/ を確認し、証明書更新の問題がないかチェックします。
    • vCert.py自体のログも確認してください。公式ドキュメントにこう書かれています、

      スクリプトは /var/log/vmware/vCert/vCert.log を生成します(これはサポートバンドルにも含められる)。また /root/vCert-master 配下にYYYYMMDD形式のディレクトリが作成され、ステージングやバックアップ等のサブディレクトリが格納されます。証明書バックアップ以外の一時ファイルはツール終了時に削除されます。

  6. 更新後の検証・サービス再起動:
    • 証明書の再作成が成功した場合は、メインメニューで”8. Restart services”を選択してください(ある程度の時間を要す)。
    • サービス再起動後、再度ワンライナーで証明書の有効期限が更新されているか確認します。
    • vCenter管理画面で証明書関連の警告やアラートが出ていないかも確認します。
  7. 更新に失敗した場合:
    1. メインメニューで”1. Check current certificate status”を選び、失敗した証明書を特定します。
    2. 前述のワンライナーコマンドでも再度状態を確認します。
    3. メインメニュー”3. Manage certificates”から、失敗した証明書タイプごとに再生成を試みます(例:”2. Solution User certificates”など)。再度ステータスを確認してください。

      証明書の種類とメニュー項目の対応は別紙 vcsa-cert-list-chart.md の表 vCert.py Operation for each certificate 参照。

    4. いずれかでも証明書が更新された場合は、Extensionのための証明書指紋の整合性を確認するために、メインメニューで “3. Manage certificates” => “6. vCenter Extension thumbprints” を選択(または直接 ./vCert.py --run config/manage_cert/op_manage-vc-ext-thumbprints.yaml)し、そこで MISMATCH が見つかった場合には、”Y”で進み修正します。
    5. 全ての失敗証明書が更新できたら、メインメニューに戻り”8. Restart services”を選択します(ある程度の時間を要す)。
  8. 最終ヘルスチェック:
    vCSAの健全性と証明書の有効性を確認します。詳しくは、当文書の冒頭の「全体方針」にある「更新後チェックリスト」の節を参照のこと。

💡 Tips:


🛠️ fixcerts.pyの手順

fixcerts.pyは、時々、安定性に難があるとの報告もあり、証明書ごとに更新の成否が分かれることがあります。それも踏まえ、一括更新ではなく証明書タイプごとの段階的な更新をお勧めします。また、必ず最新版(執筆時点では3_2)を使用してください。

手順

  1. 証明書タイプごとにfixcerts.pyを実行:
    • 証明書タイプごとにコマンドを個別実行してください。例:
      ./fixcerts.py replace --certType machinessl --validityDays 3650 --serviceRestart False
      

      ポイント:

      • 各実行時は--certTypeを該当するタイプに変更してください。
        (例: machinessl, solutionusers, sms, data-encipherment など。証明書の種類と引数名の対応は別紙 vcsa-cert-list-chart.md の表 fixcerts.py Operation for each certificate 参照。)
      • 有効期間を延長したい場合は--validityDaysで指定できます。
        💡 実際の証明書発行期間はルートCAの期限を超えません。長い期間を指定しても、証明書はルートCAの期限と同じになります。
      • 各実行時は必ず--serviceRestart Falseを指定します。サービスの再起動は全更新完了の後に一括で行います。
      • 詳細なログ出力が必要な場合は--debugオプションを追加することもできます。
      • すべての操作はSSHセッション上で行い、「ログの保存」機能を有効にした状態で行うことを推奨します。
      • 💡 fixcerts.pyにはインタラクティブメニューはありません。すべてコマンドライン引数で操作します。
  2. 各タイプ更新後の証明書検証:
    • 各証明書タイプ更新後、更新前チェックリスト でも紹介したワンライナー(または別体の list-vecs-certs.sh)で、期限が更新されているか確認してください。
      for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not Before" -ie "Not After"; done
      
    • STSまたはlookupservice関連の証明書を更新した場合は、
      ./vCert.py --run config/view_cert/op_view_11-sts.yaml
      

      を実行し、有効期限が延長されているか確認します。

    • 更新されていない証明書がないか確認してください。
  3. 実行ごとにログを確認(より慎重にやる場合):
    • 標準のシステムログを確認してください:
      • /var/log/vmware/vmcad/
      • /var/log/vmware/sso/
    • fixcerts.py自体のログファイルも確認してください:
      • 実行時のカレントディレクトリにfixcerts.logが出力されているはず。
  4. 失敗時のトラブルシュート&再試行:
    • 失敗した証明書タイプがあれば、再度fixcerts.pyで個別実行してください。
    • --debugオプションを付与すると、より詳細な出力が得られます。
    • それでも失敗する場合は、vecs-cli等を使った手動更新や公式サポートドキュメントの参照を検討してください。
    • いずれかでも証明書が更新された場合は、Extensionのための証明書指紋の整合性を確認するために、
      ./vCert.py --run config/manage_cert/op_manage-vc-ext-thumbprints.yaml
      

      を実行し、そこで MISMATCH が見つかった場合には、”Y”で進み修正します。

  5. 全証明書更新後のサービス再起動:
    • 全ての証明書タイプの更新が正常に終わったら、下記コマンドでvCSA上のサービスを再起動します:
      service-control --stop --all && service-control --start --all
      

      これはfixcerts.py内部でも利用されている推奨の方法です。

  6. 最終ヘルスチェック&検証:
    vCSAの健全性と証明書の有効性を確認します。詳しくは、当文書の冒頭の「全体方針」にある「更新後チェックリスト」の節を参照のこと。

💡 Tips: