ESXiにプライベート認証局で発行した証明書を組み込む

はじめに

以前の記事でプライベート認証局を構築して、Webサーバーの証明書を発行する方法について紹介しました。その認証局を利用して、ESXiのサーバー証明書に署名を行なって、ESXiサーバーに組み込んだので、その手順について紹介します。

ESXiのWebクライアントを使うと、セキュリティの警告が表示されます。実害は無いので例外を受け入れてそのまま使用していましたが、アドレスバーに「保護されていない通信」(Chromeの場合) のようなメッセージが残ります。認証局で署名した証明書を使うと、警告もメッセージも出ないので、精神衛生的にはよろしいかと思います。(折角プライベート認証局を構築したので、できるだけ利用したいだけですが …)

使用したのは、ESXi 8.0 です。

プライベート認証局の構築

次の記事を参照してプライベート認証局を構築してください。

プライベート認証局によるサーバー証明書の発行
プライベート認証局(オレオレ認証局)を構築して、Webサーバー向けのサーバー証明書を発行する手順について紹介します。認証局の証明書をWebブラウザやOSの証明書ストアに読み込むことで、自己署名証明書を使ったサーバーに、警告なしにアクセスすることができます。

「ルート証明書のWebブラウザへの読み込み」までが完了すれば良いです。「サーバー証明書の作成」以降については、本稿で説明します。

サーバー証明書への署名 (@認証局)

作業環境

証明書の格納ディレクトリを作成します。

Webサーバーごとの証明書を作成するので、その格納ディレクトリを作成します。

cd ~
mkdir web-server
chmod 700 web-server

署名要求の作成

ESXiのWebクライアントから、証明書の署名要求を入手します。

ナビゲータ > ホスト > 管理 > セキュリティとユーザー > 証明書 > 新しい証明書のインポート

次のダイアローグが表示されます。

FQDN署名要求の生成またはIPアドレス署名要求の生成をクリックして、署名要求を生成します。サーバーにFQDN名を持っている場合はFQDNを、IPアドレスしか持たない場合は、IPアドレスを選択します。

証明書署名要求の結果が表示されます。

クリップボードにコピーをクリックします。

このクリップボードの内容をファイルに書き込みます。

cd ~/web-server
vim web-server.csr

署名要求の内容を確認します。

openssl req -text -noout -in web-server.csr

Common Name (CN) とSubject Alternative Name (SAN)を確認してください。筆者の場合、FQDN署名要求で生成しましたが、これらにホスト名のみがドメイン名なしで設定されていました。ESXiのインストール時に何かミスをしたためと思いますが、CNやSANはWebブラウザが証明書の検証に使う場合があるので要注意です。(ESXiのネットワークの設定で、ドメインがブランクとなっていたため、修正して対応しました)

署名

ESXiサーバーの署名要求 (web-server.csr) にプライベート認証局の秘密鍵で署名して、署名済み証明書 (web-server.crt) を作成します。

cd ~/root-ca
openssl ca -config sign-server.conf \
-in ../web-server/web-server.csr \
-out ../web-server/web-server.crt \
-extensions server_ext

作成した署名済み証明書をダンプします。

cd ~/web-server
cat web-server.crt

最後にある証明書のデータをクリップボードにコピーします。

-----BEGIN CERTIFICATE-----
 ...
-----END CERTIFICATE-----

証明書のインポート

ESXiのWebクライアントから、証明書をインポートします。

ナビゲータ > ホスト > 管理 > セキュリティとユーザー > 証明書 > 新しい証明書のインポート

ダイアローグ内にクリップボードから証明書データをコピーします。

インポートボタンをクリックします。

これで新しいサーバー証明書がインポートされ有効になります。Webブラウザの表示をリロードして、アドレスバーの警告メッセージが消えたことを確認してください。

変更履歴

日付内容
2023/05/03初版リリース