コミュニティソリューション

初心者向けCasaOSのHTTPS:リバースプロキシ、ZeroTier、Cloudflare Tunnel、TLS

A short April-June 2024 CasaOS thread from a Raspberry Pi 5 user asking for an easy HTTPS setup. The only reply suggested ZeroTier, Cloudflare Tunnel, or a domain plus Nginx reverse proxy. Its claim that ZeroTier could read the user's HTTP traffic is contradicted by current ZeroTier documentation, which says traffic is end-to-end encrypted.

すべてのCasaOS環境で機能する「HTTPSを有効にする」単一のスイッチはありません。適切な設計は、誰がサーバーにアクセスする必要があるかによって異なります。自分のデバイスだけがアクセスできればよい場合は、プライベートオーバーレイネットワークを利用して、CasaOSのダッシュボードを一切公開しない構成にできます。他の人や公開Webクライアントがホスト名でアクセスする必要がある場合は、TLSを終端して内部サービスにトラフィックを転送するリバースプロキシまたはトンネルを使用します。

2024年の元の回答には、重要な技術的誤りが1つありました。ZeroTierはオーバーレイ内の平文HTTPトラフィックを技術的に閲覧できると示唆していたのです。現在のZeroTierのドキュメントには、ネットワークトラフィックはエンドツーエンドで暗号化され、ZeroTierのインフラストラクチャはパケットの内容を読み取れないと明記されています。アプリケーション層自体がHTTPであるため、ブラウザーにhttp://と表示されることはありますが、オーバーレイのトランスポートは暗号化されています。

リモートアクセスには3つの一般的なパターンがあります

  • プライベートオーバーレイ/VPN:信頼できるデバイスだけがプライベートネットワークに参加します。
  • リバースプロキシ+ドメイン:公開HTTPSをNginx/Caddy/Traefikで終端し、CasaOSやアプリに内部転送します。
  • マネージドトンネル:Cloudflareなどのプロバイダーへの外向きトンネルをコネクターが作成します。

これらを組み合わせることもできますが、初心者は実際のアクセス要件を満たす、最もシンプルなアーキテクチャを選ぶべきです。

ZeroTierはトラフィックをエンドツーエンドで暗号化します

現在のZeroTierプロトコルドキュメントには、すべてのZeroTierトラフィックがデバイスによって管理される鍵でエンドツーエンド暗号化されると記載されています。また、FAQには、ZeroTier, Inc.はネットワークトラフィックを読み取れないと記載されています。

ZeroTierの現在のトラフィックプライバシーに関する説明を参照してください。

ブラウザーにHTTPと表示されることがある理由

CasaOSがhttp://192.168.x.xで待ち受けており、そのアドレスに暗号化されたオーバーレイ経由でアクセスする場合、ブラウザーとCasaOS間のアプリケーションプロトコルは依然としてHTTPです。オーバーレイは、その下位にあるIPパケットを暗号化します。

これは、プライベートなWireGuardトンネル内でHTTPを使用する場合と同じです。Webサーバー自体がTLSを提供していなくても、トランスポートは暗号化されています。

HTTPSは多層防御として有用です

VPNの内外でHTTPSを使用すると、次の利点があります。

  • 証明書によるサーバーの識別
  • ブラウザー標準のセキュアオリジン動作
  • トラフィックがオーバーレイの外に出た場合でも、アプリケーション層の通信を暗号化できる
  • セキュアCookieやHTTPSコールバックを必要とするアプリとの互換性が向上する

リバースプロキシは、セルフホストHTTPSの一般的な構成です

リバースプロキシを使用する場合、公開またはプライベートのDNS名はプロキシに解決されます。プロキシは443番ポートで待ち受け、証明書を管理し、その後CasaOSまたは内部HTTPポート上のアプリケーションにリクエストを転送します。

Nginx Proxy Manager、Caddy、Traefikが一般的な選択肢です。プロキシは複数のサービスへの入口になるため、それ自体を保護する必要があります。

公開証明書には通常、ドメインまたは有効なACMEチャレンジが必要です

Let's Encrypt系の証明書は、申請者が管理権限を証明した後、ドメイン名に対して発行されます。自宅環境では通常、ドメインに加えてDNSチャレンジまたはHTTPチャレンジの処理が必要です。

自分のデバイスだけがアクセスできればよい場合は、証明書を取得するためだけにCasaOSのダッシュボードを公開しないでください。

Cloudflare Tunnelはインバウンドポート転送を不要にします

Cloudflare TunnelのコネクターはCloudflareへの外向き接続を作成するため、自宅ルーターに通常のインバウンド443番ポート転送ルールを設定する必要がありません。Cloudflareは公開ホスト名に対してHTTPSを提供できます。

これにより、信頼境界の一部がCloudflare側に移るため、管理サービスには認証やアクセス制御ポリシーを組み合わせるべきです。

可能な限りCasaOSの管理UIを非公開に保つ

最も安全な構成は、多くの場合、公開アクセスが必要なアプリケーションだけを公開し、CasaOSの管理インターフェースはLANまたはプライベートVPN/オーバーレイ経由でのみアクセス可能にすることです。

TLSは通信を保護しますが、管理者ダッシュボードの権限を縮小するものではありません。

Pi-holeとWireGuardには同じ公開モデルは必要ありません

元のユーザーは、後からPi-holeとWireGuardを追加する予定でした。Pi-holeのDNSサービスは通常、オープンインターネットではなく、信頼できるLAN/VPNクライアント向けです。WireGuardは意図的にVPNのUDPリスナーを公開しますが、その後、他のサービスへのプライベートな経路を提供します。

VPNポートを1つ到達可能にする必要があるからといって、すべてのCasaOSアプリを公開しないでください。

CasaOS HTTPSに関するよくある質問

ZeroTierはZeroTierネットワーク内のHTTPトラフィックを読み取れますか?

現在のZeroTierドキュメントによれば、読み取れません。トラフィックはエンドツーエンドで暗号化され、ZeroTierのインフラストラクチャはパケットの内容を読み取れません。

プライベートVPN経由でのみ接続する場合、HTTPSは必要ですか?

VPNによってトランスポートはすでに暗号化されていますが、HTTPSによって証明書による識別と多層防御を追加できます。

CasaOSの管理ダッシュボードをリバースプロキシ経由で公開すべきですか?

具体的で十分に保護された理由がない限り、管理UIは非公開にしておくことを推奨します。