セルフホストのサーバの大半をSSL化

昨年10月にこのブログでも使っている独自ドメインをCloudflareに移管したのですが、その時にやろうと思っていたことを忘れていました。

DNSチャレンジを使っての、ローカル環境の各サーバのSSL化です。前にドメイン管理をしていたバリュードメインでは出来なかったのですよね。前にDNSチャレンジという技術を知ってやってみようと思ったら駄目で、それもあってCloudflareに移管したのをすっかり忘れていました。

当然ですがこのブログを運用しているGhostのサーバと、あとNextcloudとVaultwardenとFreshRSSは既にCloudflareトンネルでSSL化していたので、残りのMemosとJellyfinをDNSチャレンジでSSL化します。

まず準備として、CloudflareでAPIトークンを作成します。

Cloudflareの「アカウントの管理」→「アカウントAPIトークン」で「トークンを作成」をクリックし、「ゾーンDNSを編集する テンプレートを使用する」から、
特定のゾーン : 独自ドメイン
を選んでから「概要に進む」をクリックして、
出てきたAPIトークンをコピペしておきます。一回限りしか表示されないそうです。

次に、Cloudflareでドメインを管理するようになって不要になり、Proxmoxからは削除していたNgnix Proxy Managerを、Proxmox Backup Serverからリストアします。

リストアしたNPMで、
「SSL Certificates」から「Add Let’s Encrypt Certificate」を選び、
ドメインネームはサブドメインをワイルドカードで指定して、「Use a DNS Challenge」でCloudflareを選び、さっきコピペしておいたAPIトークンを貼り付けて保存すると、サブドメイン共通で使い回せるSSL証明書が完成します。

次に、「Proxy Hosts」で作りたいサブドメインを「Add Proxy Host」から作成します。ドメインネームにサブドメインを入れて、Forward Hostname/IPにプライベートIPアドレスを入れて、必要ならPortも指定して、SSLタブでさっき作ったSSLを選んで完了。

最後に、OpenWrtで「Network」→「DHCP and DNS」→「DNS Records」タブで、
必要なサブドメインについてHostnameとIPアドレスを入れます。
ここで最後に「Save& Apply」を押して適用しないと有効にならないのが落とし穴。今回何度も忘れて、???という状態になってしまいました。

成功したので気を良くした自分は、ついでにProxmox VEとProxmox Backup ServerもSSL化しようとして、ハマりました。

他のサーバと同じようにやってもブラウザで開かず、AIに聞いてみると、NPMで
Websockets Support: ON
HTTP/2 Support: ON
にした上で、Advancedタブに

location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_set_header Host $host;
proxy_pass https://192.168.x.x:8006; # ← こっはPVEのIP(PBSの場合は8007ポート)にする
}

を書かないといけないらしい。マジでAIに聞かないとわからんわ。

というか、そもそもProxmoxの場合は、
「データセンター」→「ACME」
にある機能で、ここからDNSチャレンジできるやん。まあ、その場合はワイルドカードで作ったSSL証明書の使い回しが出来ないので、それはそれで面倒ですけれど、Proxmox単体でSSL化するならこっちのほうが圧倒的に早いです。

素人だからこそのアホな悩みでしたけれど、まあこれでProxmox VEもProxmox Backup Serverも、他のローカル環境のサーバもSSL化出来たのでOKです。

一応、怖くてやっていないですが、
・OpenWrt
・Pi-hole
・Ngnix Proxy Manager
については、SSL化したらややこしいですよねえ・・・。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA