どうも、Tです。
VMwareさんの推奨するvSphereの証明書管理アプローチのハイブリッドモードを試してみます。
目次
ここでの結論
- vSphere CleintからマシンSSL証明書の置き換えができるとはいえ、やはり面倒ではある。
- ハイブリッドモードにすることで、マシンSSL証明書有効期限2年をCA認証局で設定する好きな期間に延長することができる(ハイブリッドの本来の目的は社内へのブラウザの証明書エラーを簡易に運用するだめですが・・・)
- ソリューションユーザー証明書のwcpは2年で置き去りにされる
VMwareさんが推奨する理由はわかるけど、wcp証明書の問題はどうするつもりなんだろうか・・・?
wcpの証明書が切れたときの動作は下記記事をご参照ください。
やりたいこと
vSphere7環境で証明書の管理構成としてハイブリッドモードを構成します。
vSphereの証明書を管理方法には複数種類ありますが、VMwareさんが推奨するのは、下記の2つになります。
VMCA のデフォルト証明書
VMCA は、vCenter Server および ESXi ホストのすべての証明書を提供します。
VMCA のデフォルト証明書と外部 SSL 証明書(ハイブリッド モード)
vCenter Server の SSL 証明書を置き換え、VMCA でソリューション ユーザーおよび ESXi ホストの証明書を管理できるようにします。高度なセキュリティに対応したデプロイでは、必要に応じて、ESXi ホストの SSL 証明書も置き換えることができます。
1つはインストール後に構成されているすべての証明書をVMCAで管理する方法です。
2つ目のハイブリッドモードは、マシンSSL証明書(と任意でESXiホスト証明書)をカスタム認証局(外部のCA)の証明書を使って置き換える構成です。
ハイブリッドモードの利点は、下記に記載されています。
ちなみにですが、ハイブリッドモードを使わずソリューションユーザーも置き換える方法については非推奨になっているようです。vSphere7のcertificate-managerを実行してみるとロシューションユーザー証明書は将来的に廃止される旨が記載されています。
5. Replace Solution user certificates with Custom Certificate
NOTE: Solution user certs will be deprecated in a future release of vCenter. Refer to release notes for more details.
環境
環境は、下記の記事で利用した環境を用います。
また、vSphereとは外部のカスタム認証局が必要です。今回は、WindowsServerで提供しているAD CSエンタープライズCAとWeb画面で証明書要求が行えるWeb登録機能を使います。
- vCenterServer:7.0.2 17958471
- vSphere ESXi: 7.0.2 17867351
- カスタム認証局:AD CS(エンタープライズCA&Web登録)
事前確認
マシンSSL証明書の有効期限は2023年8月です。
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からみても同様ですね。
AD CSの認証テンプレート作成
この操作は、AD CSサーバーで行います。
vSphereで利用する証明書のテンプレートの作成方法のKB2112009があります。この手順に沿ってテンプレートを作成していきます。今回は、マシンSSL証明書として使いますが、KBにあるようにソリューションユーザー証明書にも利用することができます。
AD CSにログインして、サーバーマネージャーから「ツール」->「証明機関」をクリックします。
「証明書テンプレートを右クリック」->「管理」をクリックします。
「Webサーバーを右クリック」->「テンプレートの複製」をクリックします。
互換性タブ
互換性タブの中を設定していきます。
「証明機関」を「Windows Server 2012」にします。確認画面がでたら「OK」をクリックします。
「証明書の受信者」を「Windows7 / Server 2008 R2」にします。確認画面がでたら「OK」をクリックします。
証明機関と証明書の受信者設定は、KB2112009に則っています。この設定では、SSL通信に使用する際のアルゴリズム決定などに利用される情報を定義しているので、現存する(SSL通信を行う)OSバージョンが指定されていればよいと考えていました。しかし、KB以外の値、例えば証明機関をWindows Server2012にした後、証明書の受信者をWindows8 / Windowservser2012以降を選択すると、テンプレートのスキーマバージョンが4になりWeb登録画面に表示されない問題が発生しました。KBの通りのバージョンを指定してスキーマバージョン2で作成したところ、Web登録画面に表示されたのでKB通りに進めることにしました。
【参考】
※余力あれば調べる予定。
全般タブ
全般タブを設定します。
- テンプレート表示名:わかりやすい任意の名前を入力
- 有効期限:マシンSSL証明書の有効期限(任意で設定)
拡張機能タブ
拡張機能タブを設定します。
「アプリケーションポリシー」->「編集」をクリックします。
「サーバー認証」を選択して「削除」をクリックします。
「サーバー認証」が削除されたことを確認して「OK」をクリックします。
「基本制限」を選択して「編集」をクリックします。
「この拡張機能を有効にする」にチェックを入れて「OK」をクリックします。
「キー使用方法」を選択し「編集」をクリックします。
「署名は発行先の証明である(非否認)」にチェックを入れて「OK」をクリックします。
サブジェクト名タブ
サブジェクト名タブの「要求に含まれる」が選択されていることを確認し「OK」をクリックします。
テンプレート表示名に作成したテンプレートが表示されること、スキーマのバージョンが2であることを確認します。
AD CSの証明書テンプレートに追加
作成してテンプレートを使えるように証明書テンプレートに追加していきます。
「証明書テンプレートを右クリック」->「新規作成」->「発行する証明書テンプレート」をクリックします。
リストの中から作成した証明書テンプレートを選択し「OK」をクリックします。
証明書テンプレートの中に追加されたことを確認します。これで証明書テンプレートとして使えるようになりました。
マシンSSL証明書のCSR(証明書署名要求)作成
この手順は、vSphere Clientから行います。
CSR( Certificate Signing Request )は、自分の証明書にCAによって署名をお願いするために行います。今回で言えばマシンSSL証明書対して、CA(AD CS)に署名してもらうために行います。
「証明書の管理」->「マシンSSL証明書のアクション」->「証明書署名要求(CSR)の生成」をクリックします。
CSRに必要となる情報を入力して「次へ」をクリックします。
SAN(Subject Alternative Name)がオプション扱いではありますが、FQDNの登録が必須です。SANは、コロンで区切ってショートネームやIPも指定できます。
SubjectAltName には DNS Name=<machine_FQDN> が含まれている必要があります。
「ダウンロード」をクリックして「完了」をクリックします。
ダウンロードしたcrsファイル(testvcsa.testdev.lab.csr)をこの後使います。
この状態でVECSを見ると__MACHINE_CSRというものが作成されていました。
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
AD CSからvSphere証明書を取得(署名済み証明書の取得)
証明書のダウンロード
この操作は、AD CSサーバーで行います。
先ほど作成したCSRファイルをもとに、署名された署名所を取得します。KB2112014を参考に進めます。
https://testadcs.testdev.lab/ などAD CSのWeb登録のURLにアクセスします。ショートネームでアクセスしていたので証明書エラーが表示されていますが、無視しておきます・・・。
「証明書を要求する」をクリックします。
「証明書の要求の詳細設定」をクリックします。
「Base 64 エンコード CMC または PKCS #10 ファイルを使用して証明書の要求を送信するか、または Base 64 エンコード PKCS #7 ファイルを使用して更新の要求を送信する。」をクリックします。
作成した「testvcsa.testdev.lab.csr」の中身をすべて選択してコピーします。
コメントのように見れる下記もコピーしてください。
—–BEGIN CERTIFICATE REQUEST—–
—–END CERTIFICATE REQUEST—–
コピーしたものを「保存された要求」に貼り付けます。
証明書テンプレートに作成したテンプレートを選択して「送信」をクリックします。
証明書テンプレートに作成したテンプレートが表示されない場合、スキーマバージョンが2ではない可能性があります。作成したテンプレートのスキーマバージョンを確認してください。
下記のような画面が出た場合は、「はい」をクリックします。この確認画面がでるのは、AD CSにショートホスト名のURLでアクセスしているためです。
「Base64エンコード」を選択し「証明書のダウンロード」をクリックします。
任意の名前.cerのファイル名を付けて「保存」をクリックします。
署名済みの証明書がダウンロードできました。
「ホーム」をクリックします。
CA証明書チェーンのダウンロード
vSphereのVMCAにマシンSSL証明書をインポートするために、CAチェーンの証明書(ADCSの証明書)も必要になりますのでダウンロードします。
「CA 証明書、証明書チェーン、または CRL のダウンロード」をクリックします。
下記のような画面が出た場合は、「はい」をクリックします。この確認画面がでるのは、AD CSにショートホスト名のURLでアクセスしているためです。
「Base64」を選択し、「CA証明書チェーンのダウンロード」をクリックします。
任意の名前.p7bのファイル名を付けて「保存」をクリックします。
CA証明書チェーンのファイルがダウンロードできました。このファイルに含まれる署名所をBase64でをエクスポートします。p7bファイルをダブルクリックします。
「証明書」->「ADCSの証明書を右クリック」->「すべてのタスク」->「エクスポート」をクリックします。
「次へ」をクリックします。
「Base 64 encoded X.509(.CER)」を選択し「次へ」をクリックします。
出力場所を決定して「次へ」をクリックします。
「完了」をクリックして「正しくエクスポートされました」を確認したのち「OK」をクリックします。
CA証明書のcerファイルが出力されました。この後は、mashinessl.cerとadcsca.cerファイルを使います。
改行コードの変更(CRLF→LF)
AD CSから出力されたcerファイルは、改行コードがCRLFで出力されます。このままvSphereへインポートするとKB80803の不具合になるそうです。※KBには記載がありませんが、CPU使用率も高くなるようです。mashinessl.certとadcsca.cerの改行コードを変更します。
ダウンロードした後のcerファイルです。改行コードがCRLFになっています。
高機能テキストエディタやviなどを使用して改行コードをLFに変換します。
この後は、改行コードをLFに変換したcerファイルを使用します。
マシンSSL証明書のインポート
取得した証明書をvcsa(VMCA)へインポートしていきます。
「証明書の管理」->「マシンSSL証明書のアクション」->「証明書をインポートして置き換え」をクリックします。
「vCenter Server から CSR が生成される外部 CA 証明書に置き換え (プライベート キーは組み込み)」を選択して「次へ」をクリックします。
「ファイルの参照」ボタンから、それぞれの証明書選択します。
- マシンSSL証明書:mashinessl.cer
- 信頼されたルート証明書チェーン:adcsca.cer
証明書が指定されたことを確認し「REPLACE」をクリックします。
vcsaのサービスの再起動が開始されます。再起動後にvSphere Clientへログインしなおします。
マシンSSL証明書のインポート後の確認
マシンSSL証明書の有効期限が長くなり、信頼できるルート証明書が追加されました。
マシンSSL証明書の詳細を見るとCSRを作成した内容になっていることがわかります。
vSphere ClientのWebブラウザから証明書を見てみると変わっていることがわかります。
VECSもちゃんと変わっていることがわかります。
CSR要求時に作成された__MACHINE_CSRはなくなり、__MACHINE_CERTのみになっています。
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に置き換える前のマシンSSL証明書が残ります。元の証明書は2年と短いため、放置していると証明書のステータスアラームが発生します。
置き換え後様子をみて問題ないようであれば削除しておきましょう。
参考
まとめ
vSphere Clientから操作が行えるようになったとはいえ、やはり面倒ではある・・・・。