はじめに
以前の記事でプライベート認証局を構築して、Webサーバーの証明書を発行する方法について紹介しました。その認証局を利用して、ESXiのサーバー証明書に署名を行なって、ESXiサーバーに組み込んだので、その手順について紹介します。
ESXiのWebクライアントを使うと、セキュリティの警告が表示されます。実害は無いので例外を受け入れてそのまま使用していましたが、アドレスバーに「保護されていない通信」(Chromeの場合) のようなメッセージが残ります。認証局で署名した証明書を使うと、警告もメッセージも出ないので、精神衛生的にはよろしいかと思います。(折角プライベート認証局を構築したので、できるだけ利用したいだけですが …)
使用したのは、ESXi 8.0 です。
プライベート認証局の構築
次の記事を参照してプライベート認証局を構築してください。
「ルート証明書の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 | 初版リリース |