スタンドアロンCAでHyper-Vのレプリケート用の証明書を作ってみました
前回はActive Directory 証明書サービスでスタンドアロンのオレオレ認証局になったところまで書きましたが、Hyper-VのVMのレプリケーションで使用する証明書を発行してレプリカ設定に使えるかを試してみました。
Hyper-VのプライマリサーバーでCAも動いていますが、CAは別のマシンでも問題ないと思います。
ちなみにCAは Windows Server 2012 R2、 プライマリも 同じ、レプリカは Windows Server 2016 TP5で試しています。
証明書発行
まずは証明書を作って組み込みましょう
証明機関Web登録サービスを追加
前回は証明機関のサービスしか入れてませんでしたので、Web経由で証明書を発行できるよう サーバーマネージャーの機能と追加から「証明機関Web登録」サービスを追加します。すでに入れてる場合はこの手順は飛ばしてOKです。
証明書サービスの構成をもう一度やり直し、IISマネージャを起動して httpsでも通信できるようにバインドをしておきます。
IISは入れたくなかったのですが、WebブラウザでCSRを作成したり、出来上がった証明書を取得したりができてとても便利です。
CSR作成
プライマリとレプリカの2台分をCAで作ります。
IE11で
https://localhost/certsrv/
証明書発行のためのページにアクセスし、 「証明書を要求する」->「証明書の要求の詳細設定」->「このCAへの要求を作成し送信する」とリンクを辿ってCSRの詳細を入力するページを開きます。
- 識別情報の名前
サーバ名(FQDN)を設定 - 証明書の種類
その他 - OID
1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 - キーのサイズ
2048以上 - エクスポート可能なキーとしてマークする
チェック
を入力して「送信」ボタンをクリック
証明書を発行
CAでCSRをもとに証明書を発行
証明書のインポート
CAのIEで再度
https://localhost/certsrv/
にアクセスし、「保留中の証明書の要求の状態」からどんどん進んで、「この証明書をインストール」を実行します。
証明書のエクスポート&削除
IEのインターネットオプション -> コンテンツ -> 証明書 で個人の証明書ストアに格納されていますので、これをpfx(PKCS#12)ファイルとしてエクスポートしてやります。
インターネットオプションの証明書の画面で個人タブを開き、先ほどCAで発行され、IEでインポートした証明書を選択。 エクスポートボタンをクリックし、
- はい、秘密キーをエクスポートします
- PKCS#12 形式
- 証明のパスにある証明書を可能であれば全て含む
- 全ての拡張プロパティをエクスポートする
あとは適当にパスワードを設定してpfxファイルとして保存。
インターネットオプション画面の方の証明書はいらないので削除してください。
ファイルから証明書の再インポート
出来上がったpfxファイルをプライマリ、レプリカサーバに移動し、ダブルクリックしてインポートします。
- 保存場所
ローカルコンピュータ - 証明書ストア
次のストアに配置するのラジオボタンをチェックして、参照で「個人」
として改めて証明書をインポートします。
CAのルート証明書がインポートされていない場合、ついでにローカルマシンの信頼されたルート証明機関にインポートしておきましょう
ちなみに、コマンドプロンプトで
certutil -store my
を実行して、ちゃんと証明書が入っていればOKです
証明書ストアの状態をもっとちゃんと見たい人は、mmcを使ってください
ファイアウォール設定
前もってプライマリ、レプリカ両方のマシンのポートの使用許可を設定します。 (障害時にはプライマリとレプリカが切り替わるので両方に必要)
サーバーマネージャーから「セキュリティが強化された Windows ファイアウォール」->「受信の規則」
Hyper-Vマネージャでの設定
証明書とファイアウォールの設定が終わったので、今度はHyper-Vの設定作業に移ります
レプリカサーバーの有効化
Hyper-Vマネージャを開き、「Hyper-Vの設定」-> 「レプリケーションの構成」画面をクリック。
- レプリカサーバーとしてこのコンピューターを有効にする
チェック - 証明書ベースの認証を使用する
チェック - 証明書の選択
一生懸命組み込んだ証明書を指定してあげます
プライマリ、レプリカサーバ両方でこの処理を行います。
VMのレプリケーション設定
めんどくさい前準備はこれでおしまい。あとはプライマリサーバのHyper-Vマネージャーから、 レプリケートしたいVMの設定を行うだけです。
VMを右クリックして「レプリケーションを有効にする」をクリック
- レプリカサーバー
当然レプリカサーバ名を指定 (DNSかhostsに記載された名前が必要) - 証明書ベースの認証を使用する
当然こちらをチェック - 証明書の選択 上で設定したものと同じやつを指定
あとはレプリケートしたい仮想ディスクや頻度、チェックポイントの間隔を指定して、完了ボタンをクリック。
レプリケートが有効になれば成功です。
スタンドアロンCAじゃ無理かなと諦めかけていましたが、windowsの気持ちになってなんとか設定できました。いやぁよかった。
ActiveDirectory入れちゃえば一発で解決すると思うとちょっと複雑ですが、あれはあれで厄介なのでもうちょっと時間のあるときにチャレンジしてみます。
で、JavaでSecureなSocket通信のプログラムやASN.1のライブラリを書いたりで、証明書や認証周りの知識は人並みにはあるつもりでしたが、いざこういったインフラ周りの設定をやろうとするとなかなか大変。案外プログラムを書いてる方が楽かもしれませんね(^^;