HTTP-01 チャレンジと DNS-01 チャレンジ

Proxmox で Let’s Encrypt から証明書を取得する方法としては HTTP-01 チャレンジが簡単かと思う。でも何らかの事情で外部から PVE の 80 番ポートに到達できないときは、DNS-01 チャレンジも可能。MyDNS.jp はそのための API を提供しているから、テスト環境の PVE クラスタで試してみた。

SSL 証明書を PVE(ホスト)に置くから当然だけど、前提条件として、リバースプロキシで SNI(Server Name Indication)を運用、外部のクライアントから LAN 内の PVE まで SSL 通信できる必要がある。

多くのサブドメイン用にワイルドカード証明書を取得する話とは別です。

目次

MyDNS 登録情報の確認

PVE で challenge プラグイン の追加に必要な次の MyDNS の情報を確認しておく。

  • MYDNSJP_MasterID=mydns999999
  • MYDNSJP_Password=AaAaAaAa123

challenge プラグインの追加

管理画面のデータセンターの「ACME」から「追加」をクリックして、必要な情報を入力する。
DNS API はあらかじめ用意されているものから選択する。
API データはMyDNS 登録情報で確認したものを入力する。

challenge プラグイン
ACME DNS Plugin の追加
追加後の画面

各ノードで ACME を設定する

管理画面の対象ノードの「証明書」で設定する。画像は HTTP-01 チャレンジで設定、証明書取得済みの状態。
ドメインに取得済みの pve1.jisaba.life があるから編集をクリック。

ノードの証明書設定画面

ドメインの登録画面が表示されるから、challenge タイプは DNS に変更、プラグインは作成済みのプラグイン(Test-MyDNS)を選択、ドメインは表示されているホスト名(pve1)+ドメインのままでOK。

ドメインの設定

ドメインは新しくなったものの、まだ古い証明書のままなので見た目は何も変わってない。

ドメイン追加後

「order certificates NOW」をクリックして、証明書を更新する。ダイアログ画面の最後が TASK OK なら問題なく、新しい証明書の取得に成功している。

新しい証明書の取得中

無事、有効開始日が今日(2022-05-22)になっている。
それぞれのノードで同じように設定、新しい証明書を取得する。

証明書更新後

nginx 設定変更

リバースプロキシの HTTP-01 チャレンジ用の設定ファイルは不要になったから、/etc/nginx/sites-enabled/ と /etc/nginx/sites-available/ にある関係の conf ファイルを削除して nginx を再起動する。

終わりに

今回は DNS-01 チャレンジによる証明書の取得・更新の設定方法を確認することが目的なので、ホスト(pve1.jisaba.life)と CT(jisaba.life)を一つのワイルドカード証明書で何とかしようという訳じゃない。

PVE(ホスト)と各サーバー(VM、CT)をすべて DNS-01 チャレンジにすれば nginx の設定を省略できる(80 番ポートを閉じることができる)のはメリット。

例えば沢山の Web Server があってサブドメインも多数でワイルドカード証明書を使用する必要がある場合、PVE と各サーバーを別のドメインで運用することにして、各サーバー用のワイルドカード証明書を取得するのが現実的かな。

参考

コメント

コメントする

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

目次
閉じる