【vSphere7.0u2】vcsa(VMCA)の証明書構成を従属CAモードにしてみる(VMCAルート証明書の置き換え)

どうも、Tです。

VMwareさんの推奨しないvSphereの証明書管理アプローチの従属CAモードを試してみます。

スポンサーリンク
アドセンス1

ここでの結論

  • ソリューションユーザー証明書が10年期限から2年期限に置き換わるのはいただけない
  • 現在のところ積極的に従属CAを採用するメリットが見つからない

やりたいこと

vSphere7環境で証明書の管理構成として従属CAモードを構成します。

この構成は、VMCAの従属CA・中間CA・下位CAなど呼び方がバラバラですが、従属CAと呼ぶようにします。つまり、既存のCA配下にVMCAを構成する形になります。

https://docs.vmware.com/jp/VMware-vSphere/6.7/com.vmware.psc.doc/GUID-56693E45-BD91-4C64-93A4-F423001EA5C0.html

環境

環境は、下記の記事で利用した環境を用います。

【vSphere7.0u2】証明書の有効期限はどうなったのか。マシンSSL証明書が切れるとどうなるか。
どうも、Tです。 過去にvSphereの証明書問題で有効期限を調べてまとめました。vSphere7はどうなるのか気になったので...

また、外部のカスタム認証局が必要です。今回は、WindowsServerで提供しているAD CSエンタープライズCAとWeb画面で証明書要求が行えるWeb登録機能を使います。

Active Directory証明書サービス(AD CS)でオレオレ認証局(エンタープライズCA)を構築する
どうも、Tです。 急遽、証明書機関が必要になったので、Active Directory証明書サービス(AD CS)を使えるようにしてみ...
Active Directory証明書サービス(AD CS)に証明機関Web登録を追加する(CAと同居構成)
どうも、Tです。 先日、AD CSをインストールしましたが、Webブラウザから証明書発行のリクエストを行えるようにWeb登録機能を追加...

  • vCenterServer:7.0.2 17958471
  • vSphere ESXi: 7.0.2 17867351
  • カスタム認証局:AD CS(エンタープライズCA&Web登録)

事前確認

現状の証明書の確認

インストール後のVMCAが管理している状態の証明書の状態です。

for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

vSphere Cleintからみても同様ですね。

vcsaでSFTP利用を有効化

手順の中でvcsaとSFTPを利用してファイルのやり取りがあるので、KB2107727を参考にWinSCPを利用してSFTPを使えるようにしておきます。

VMware Knowledge Base

AD CSの認証テンプレートの作成

この操作は、AD CSサーバーで行います。

従属CAで使用する証明書のテンプレートの作成方法のKB2112009があります。この手順に沿ってテンプレートを作成していきます。

VMware Knowledge Base

AD CSにログインして、サーバーマネージャーから「ツール」->「証明機関」をクリックします。

「証明書テンプレートを右クリック」->「管理」をクリックします。

「下位の認証機関を右クリック」->「テンプレートの複製」をクリックします。

互換タブ

互換性タブの中を設定していきます。

「証明機関」を「Windows Server 2012」に、「証明書の受信者」を「Windows7 / Server 2008 R2」にします。

証明機関と証明書の受信者設定は、KB2112009に則っています。この設定では、SSL通信に使用する際のアルゴリズム決定などに利用される情報を定義しているので、現存する(SSL通信を行う)OSバージョンが指定されていればよいと考えていました。しかし、KB以外の値、例えば証明機関をWindows Server2012にした後、証明書の受信者をWindows8 / Windowservser2012以降を選択すると、テンプレートのスキーマバージョンが4になりWeb登録画面に表示されない問題が発生しました。KBの通りのバージョンを指定してスキーマバージョン2で作成したところ、Web登録画面に表示されたのでKB通りに進めることにしました。

【参考】

証明書テンプレートの互換性設定について | PCテクノロジー株式会社
無線LAN用のコンピュータ証明書を作成する際などに、既存の証明書テンプレートを複製して新しいテンプレートを作成しパラメータの設定等を実施しますが、「互換性」タブにある「証明機関」や「証明書の受信者」設定を初期値から変更した場合、テンプレートのスキーマバージョンが変化し、証明書を受信するPCのOSバージョンによっては証明...

※余力あれば調べる予定。

全般タブ

全般タブを設定します。

  • テンプレート表示名:わかりやすい任意の名前を入力
  • 有効期限:置き換えるVMCAルート証明書の有効期限(任意で設定)

拡張機能タブ

拡張機能タブを設定します。

「「基本制限」を選択して「編集」をクリックします。

KBでは、「この拡張機能を有効にする」にチェックを入れてとありますが、チェックが付いておりグレーアウトしているのでそのままとします。

「キー使用方法」を選択し「編集」をクリックします。

「デジタル署名」「証明書の署名」「CRL署名」「重要な拡張機能として登録する」にチェックが入っていることを確認します。

「OK」をクリックします。

テンプレート表示名に作成したテンプレートが表示されること、スキーマのバージョンが2であることを確認します。

AD CSの認証テンプレートに追加

作成してテンプレートを使えるように証明書テンプレートに追加していきます。

「証明書テンプレートを右クリック」->「新規作成」->「発行する証明書テンプレート」をクリックします。

リストの中から作成した証明書テンプレートを選択し「OK」をクリックします。

証明書テンプレートの中に追加されたことを確認します。これで証明書テンプレートとして使えるようになりました。

ルート証明書のCSR(証明書署名要求)作成

この操作は、vcsaにSSH接続します。

下記コマンドを実行してcertificate-managerを起動します。

/usr/lib/vmware-vmca/bin/certificate-manager

「2. Replace VMCA Root certificate with Custom Signing Certificate and replace all Certificates」を実行していきます。

「1. Generate Certificate Signing Request(s) and Key(s) for VMCA Root Signing certificate」を実行し、CSRファイルと鍵ファイルを生成します。

この画面は、署名付き証明書を取得した後使うので、このまま放置しておきます。

生成したCSRファイルをローカルにダウンロードします。

ファイルの中身はこんな感じになってます。

AD CSからVMCAのルート証明書を取得(署名済み証明書の取得)

証明書のダウンロード

この操作は、AD CSサーバーで行います。

AD CSに搭載しているWeb登録へ接続できてればどこからでも大丈夫です。本環境では、AD CSの操作であるとわかりやすいように、AD CSにログインして行っています。

先ほど作成したCSRファイルをもとに、署名された署名所を取得します。KB2112014を参考に進めます。

VMware Knowledge Base

https://testadcs.testdev.lab/certsrv などAD CSのWeb登録のURLにアクセスします。

「証明書を要求する」をクリックします。

「証明書の要求の詳細設定」をクリックします。

「Base 64 エンコード CMC または PKCS #10 ファイルを使用して証明書の要求を送信するか、または Base 64 エンコード PKCS #7 ファイルを使用して更新の要求を送信する。」をクリックします。

作成した「vmca_issued_csr.csr」の中身をすべて選択してコピーしBase64~~に貼り付けます。

証明書テンプレートに作成したテンプレートを選択して「送信」をクリックします。

コメントのように見れる下記もコピーしてください。

—–BEGIN CERTIFICATE REQUEST—–

—–END CERTIFICATE REQUEST—–

証明書テンプレートに作成したテンプレートが表示されない場合、スキーマバージョンが2ではない可能性があります。作成したテンプレートのスキーマバージョンを確認してください。

「Base64エンコード」を選択し「証明書のダウンロード」をクリックします。

任意の名前.cerのファイル名を付けて「保存」をクリックします。

CA証明書チェーンのダウンロード

vSphereのVMCAにマシンSSL証明書をインポートするために、CAチェーンの証明書(ADCSの証明書)も必要になりますのでダウンロードします。

「CA 証明書、証明書チェーン、または CRL のダウンロード」をクリックします。

「Base64」を選択し、「CA証明書チェーンのダウンロード」をクリックします。

任意の名前.p7bのファイル名を付けて「保存」をクリックします。

CA証明書チェーンのファイルがダウンロードできました。このファイルに含まれる署名所をBase64でをエクスポートします。p7bファイルをダブルクリックします。

「証明書」->「ADCSの証明書を右クリック」->「すべてのタスク」->「エクスポート」をクリックします。

「次へ」をクリックします。

「Base 64 encoded X.509(.CER)」を選択し「次へ」をクリックします。

出力場所を決定して「次へ」をクリックします。

「完了」をクリックして「正しくエクスポートされました」を確認したのち「OK」をクリックします。

CA証明書のcerファイルが出力されました。この後は、vmca.cerとadcsca.cerファイルを使います。

中身はこんな感じです。

証明書チェーンの作成

VMCAを従属CAにする場合、先ほど用意した2つの証明書を下記のように結合する必要があります。

–BEGIN CERTIFICATE–
vmca.cert
–END CERTIFICATE–
–BEGIN CERTIFICATE–
adcsca.cer
–END CERTIFICATE–

また、AD CSから出力されたcerファイルは、改行コードがCRLFで出力されます。このままvSphereへインポートするとKB80803の不具合になるそうです。※KBには記載がありませんが、CPU使用率も高くなるようです。テキストエディタなどを使い改行コードを変更します。

VMware Knowledge Base

結合したファイルをvmcaandadcsca.cerとして保存します。

VMCAルート証明書の置き換え

vmcaandadcsca.cerをvcsaへアップロードします。

certificate-managerに戻り、「1.Continue to impoting Custom certificatee(s) for VMCA Root Signing certificate」を実行します。証明書にアップロードしたvmcaandadcsca.cerを指定し、鍵ファイルにCSR生成時に出力されたkeyファイルを指定します。

ルート証明書の置き換えがされます。ルート証明書の置き換えとともに、自動的にマシンSSL証明書とソリューションユーザー証明書も、置き換え後のルート証明書によって発行された証明書に置き換えられます。

処理が進むとvCenterサービスが自動的に再起動するため再度ログインします。

ステータスが100%になると完了です。非力な検証環境のためか40分ほどかかりました。

確認

ログイン画面を見ると証明書エラーが消え、vmcaがADCSの従属CA(下位CA)になっていることがわかります。※証明書エラーが消えない場合Webブラウザを閉じて開きなおしてください。

サブジェクトにも指定した値が入っています。

vSphere Clientから見ると、証明書が変わっていることが確認できます。

vcsaからみるとソリューションユーザー証明書も更新されていることがわかります。

for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

BACKUP_STOREに置き換える前の証明書が残ります。放置していると証明書のステータスアラームにトリガーされる可能性があります。

置き換え後様子をみて問題ないようであれば削除しておきましょう。

https://kb.vmware.com/s/article/68171

VMCAルート証明書は、指定した15年の有効期限になっていますが、置き換え後のVMCAによって生成された証明書はすべて2年の有効期限になっていました。

EAM証明書の更新

ソリューションユーザー証明書を更新したさいに、EAM証明書が自動的に更新できないことがあるようです。今回の検証では確認できませんでしたが、合わせて確認するようにしましょう。

https://kb.vmware.com/s/article/80588
https://kb.vmware.com/s/article/2112577

ESXiホスト証明書の置き換え

ESXiホスト証明書は、VMCAルート証明書によって発行されます。vCenterに参加している状態でVMCAルート証明書を置き換えた場合、ESXiホスト証明書まで自動的に置き換えてくれません。また、VMCAルート証明書を置き換えたあと24時間以内にESXiホスト証明書を更新しようとするとデフォルト状態では失敗します。

VMware Knowledge Base
2021年8月現在、vSphere7がRelated Versionsに入っていませんが、同事象だと思われます。

失敗パターン

ESXiホスト証明書を見ると置き換え前のVMCAルート証明書によって発行されています。まずデフォルトの状態で「更新」をクリックします。

「はい」をクリックします。

「ホスト上のサブジェクト証明書を更新」タスクが「一般的なシステムエラーが発生しました」で失敗してしまいます。

成功パターン

KB2123386の対応を行います。

「vCenter」->「設定」->「詳細設定」->「設定の編集」をクリックします。

フィルタで「vpxd.certmgmt.certs.minutesBefore」を検索します。

「vpxd.certmgmt.certs.minutesBefore」の値が「1440(分です。時間にして24時間です)」になっています。

「10」に変更して「保存」をクリックします。

ESXiホスト証明書の「更新」をクリックします。

「はい」をクリックします。

「ホスト上のサブジェクト証明書を更新」タスクが完了します。

置き換え後のルート証明書で発行され有効期限も伸びます。※画面反映まで少し時間がかかります。画面を更新するなどしてください。

参考

VMware Knowledge Base
VMware Knowledge Base
vSphere Certificate Manager で CSR を生成し、ルート証明書(中間認証局)を用意する
vSphere Certificate Manager を使用して証明書署名要求 (CSR) を生成できます。この CSR をエンタープライズまたは外部の認証局 (CA) に送信して署名を要求します。署名付きの証明書は、サポートされているさまざまな証明書置き換えプロセスで使用できます。
https://vraccoon.com/2020/04/vsphere-7-vmca-as-subordinate-intermediate-ca/
vSphere 7 – Certificates with VMCA as Subordinate - Derek Seaman's Tech Blog
Over the years I've written a number of blog posts about replacing the SSL certificates for vSphere. Back in the day it was exceedingly difficult and was very e...
https://captainvops.com/2021/03/03/microsoft-ca-installing-custom-vsphere-7-certificates-and-enabling-vmca-to-act-as-the-intermediate-ca/

まとめ

メリットねぇなこれ!

スポンサーリンク
アドセンス1
アドセンス1
ブログランキング・にほんブログ村へ

シェアする

フォローする