【やりたい事】
VMware ESXi 管理画面にアクセス(https)する際に、証明書エラーが発生するので、
プライベートCAの証明書に変更する事で、証明書エラーを出ないようにする。
【前提条件】
・プライベートCAの構築/運用を行っていること。
→ 自己署名証明書を使う手法もあるが、プライベートCAから発行した証明書を利用
→ プライベートCAは、opensslコマンドで発行している
→ 証明書チェーンは、ROOTCA証明書->中間CA証明書->サーバー証明書(ESXi)
→ サーバー証明書(ESXi)のCNは、192.168.100.1 のIPアドレス用証明書とする
→ 内部DNSサーバーで名前解決する方法もあるが、今回はIPアドレス用証明書を利用
・ROOTCA証明書は、利用するブラウザにインポート済であること
【環境】
・VMware ESXi 6.7.0 Update 3
→ 個人利用の為、vCenterはありません。
・FireFox 104.0.2 (64 ビット)
・OpenSSL 1.1.1k
【手順】
(1) サーバー証明書を発行し、プライベートCAの署名を行う。
(1-1) ESXiにSSHログインを行い、/etc/vmware/ssl/rui.key を取得。
[ESXi] # cat /etc/vmware/ssl/rui.key
※ 今回、秘密鍵ファイルは変更(再作成)しないので、そのまま利用
(1-2) CSR作成とCA署名の実施
[PCA] # vi /tmp/esxi.example.jp.key
(1-1)のデータをコピペ&保存
[PCA] # cd /root
# openssl req -new -key /tmp/esxi.example.jp.key -out /tmp/esxi.example.jp.csr
(DN情報を入れる)
CSRが出来上がったら、プライベートCAで署名する。
=> 署名後のファイルを取得しておく。(esxi.example.jp.pem)
※CA署名時のポイント※
X509v3拡張情報として、SAN (SubjectAltName)をCA側(openssl.cnf)で追加する。
SubjectAltName = DNS.1: esxi.example.jp,IP.1: 192.168.100.1
FireFoxでは、「DNS: 192.168.100.1」とDNS属性しても証明書エラーが発生するので、
「IP: 192.168.100.1」IP属性にする必要があった。
(1-3) 中間CA証明書の取得
[PCA] # cat /opt/privateca/ICA/cacert.pem
(2) ESXiにて証明書ファイルを変更する
(2-1) 念のため、改修するファイルのバックアップを取得する
ESXi上では、
サーバー証明書ファイル : rui.crt
サーバー証明書鍵ファイル: rui.key
# cd /etc/vmware/ssl
# mv rui.crt rui.crt.bak
# vi rui.crt
(1-2)で取得したサーバー証明書ファイル(esxi.example.jp.pem)を貼り付け
(1-3)で取得した中間CA証明書を貼り付け
貼り付け順番は、サーバー証明書、中間CA証明書の順
ex) ESXi上にファイルとして保存した場合、
サーバー証明書:/tmp/esxi.example.jp.pem
中間CA証明書 :/tmp/cacert.pem
[ESXi] # cat /tmp/esxi.example.jp.pem /tmp/cacert.pem > /etc/vmware/ssl/rui.crt
(2-2) プロセス再起動と変更内容をシステム ディスクに保存操作を行う。
# /etc/init.d/hostd restart
# /etc/init.d/vpxa restart
# /sbin/auto-backup.sh
※ 当環境では、OS再起動を行わずにプロセス再起動で対応しているが、
正規手順は、ESXiの再起動を行う事になっているので、あくまで参考程度とすること。
ESXi Shell からのデフォルトの証明書とキーの置き換え
https://docs.vmware.com/jp/VMware-vSphere/6.7/com.vmware.vsphere.security.doc/GUID-A261E6D8-03E4-48ED-ADB6-473C2DAAB7AD.html
(3) 掃除
[PCA] # rm /tmp/esxi.example.jp.key
# rm /tmp/esxi.example.jp.csr
# rm /tmp/esxi.example.jp.pem
※ 証明書データをコピペせずに、ESXi上にファイル転送(保存)した場合は、一時保存した(不要な)ファイルを削除すること