Proxmox VE 4.2の管理コンソールのSSL証明書をプライベートCAで払い出す

Proxmox VE4.2でSafariから仮想コンソールを開こうとすると、以下のようなエラーが出力される場合がある。

TASK ERROR: command '/bin/nc -l -p 5900 -w 10 -c '/usr/bin/ssh -T -o BatchMode=yes 192.168.0.112 /usr/sbin/qm vncproxy 123 2>/dev/null'' failed: exit code 255

このエラーが出る原因だが、Proxmoxの証明書をデフォルトのまま(オレオレ証明書のまま)利用していると、信頼できないページということでSafari側でNoVNCの実行をブロックするためのようだ。 証明書を開いて"このページは信頼できる"とかで設定をしてやるか、もしくはブラウザをChromeにしてやることで仮想コンソールを使えなくはないが、できれば綺麗に使いたいもの。

一応、Let's Encryptを使って処理をする方法もあるにはあるのだが、いかんせん外から名前解決して接続できる状態じゃないといけないようで面倒くさい(仮想基盤なんて、基本的に内部ネットワークで利用されている場合が多いので)。 なので、プライベートCAで証明書を発行して置き換えてやることにする。

すでにプライベートCA自体は構築済みとし、普通に証明書の発行が終わった状態から(証明書の発行やCAでの署名方法についてはリンク先参照)。 クライアントにはクライアント証明書をインストール済みとする。 なお、Proxmoxの証明書は証明書+中間CA証明書の形式にする必要があるので作成時には注意。

作成した証明書(proxmox_full.crt)と鍵ファイル(proxmox.key)をscpでProxmoxホストの「/tmp」配下に転送したら、以下のコマンドでファイルの置き換えをする。

cp /tmp/proxmox_full.crt /etc/pve/nodes/$(hostname)/pveproxy-ssl.pem
cp /tmp/proxmox.key /etc/pve/nodes/$(hostname)/pveproxy-ssl.key
systemctl restart pveproxy

これで、あとはWebブラウザからアクセスすれば正常にアクセスできるようになる。

Let's Encryptで発行する方法もよさそうだけど、いろいろと考えるとプライベートCAちゃんと運用した方が結果的にはいいのかな。