リバースプロキシとSSL証明書
AegisMesh の全通信(Web UI、REST API、gRPCシグナリング)を外部ポート 443 のみに一本化するためのリバースプロキシ設定です。標準ではモダンで設定がシンプルな Caddy を推奨しています。
Caddyfile 設定例(推奨)
# ダッシュボード (Web UI)app.aegismesh.example.com { reverse_proxy dashboard:80}
# 管理サーバー (REST API & gRPC Management)api.aegismesh.example.com { reverse_proxy management:33073 { transport http { versions h2c } }}
# シグナルサーバー (gRPC Signal)signal.aegismesh.example.com { reverse_proxy signal:10000 { transport http { versions h2c } }}- 自動SSL: Caddy が自動でドメインのLet’s Encrypt / ZeroSSL証明書を取得・更新(90日周期)するため、手動での証明書管理(certbot等)が不要です。
- h2c (HTTP/2 Cleartext): gRPC通信をリバースプロキシとバックエンドコンテナ間で高速プロキシするために
versions h2cを指定します。
コントロールプレーンのTLS証明書 (TLS Certificates for Control Plane)
AegisMesh のコントロールプレーン(Management および Signal サーバー)は、内部・外部通信の暗号化と認証のために TLS 証明書(tls.crt)および秘密鍵(tls.key)を使用します。
自動キーライフサイクル (Automatic Key Lifecycle)
AegisMesh の起動スクリプト(build-and-run.sh)は、証明書のライフサイクルを自動検知して制御します。
- 初回起動時 (First Execution):
build-and-run.shはcerts/tls.keyおよびcerts/tls.crtが存在しないことを検知すると、環境変数$AEGISMESH_DOMAINに適合した自己署名証明書(有効期間: 10年間 / 3,650日)を自動生成します。 - 2回目以降の起動 (Subsequent Runs): 既存の証明書と秘密鍵を自動検知し、変更せずそのまま維持します。サーバー再起動をまたいでも鍵ペアや証明書のフィンガープリントが自動変更されないため、ユーザーのオンボーディング時やピア接続時における鍵不一致(Key Mismatch)エラーの発生を確実に防止します。
flowchart TD
Start["build-and-run.sh 実行"] --> Check{"certs/tls.key & tls.crt が<br/>存在するか?"}
Check -- "No (初回起動)" --> Gen["自己署名証明書を自動生成<br/>(有効期間: 10年 / $AEGISMESH_DOMAIN)"]
Check -- "Yes (2回目以降)" --> Keep["既存の証明書・秘密鍵をそのまま保持<br/>(フィンガープリント不変で接続エラー防止)"]
Gen --> Launch["コントロールプレーン起動"]
Keep --> Launch
手動証明書生成手順 (Manual Certificate Generation)
初回起動前に事前に証明書を手動生成したい場合や、カスタムSAN(Subject Alternative Name)を指定したい場合は、以下の openssl コマンドを実行します。
# 証明書格納ディレクトリの作成mkdir -p infrastructure_files/certs
# 4096bit RSA秘密鍵と自己署名証明書の生成 (有効期間10年)openssl req -x509 -newkey rsa:4096 \ -keyout infrastructure_files/certs/tls.key \ -out infrastructure_files/certs/tls.crt \ -sha256 -days 3650 -nodes \ -subj "/CN=aegismesh.local" \ -addext "subjectAltName = DNS:localhost,DNS:aegismesh.local,DNS:management"
# 秘密鍵のパーミッション設定chmod 644 infrastructure_files/certs/tls.key本番環境での運用ガイドライン (Production Deployment Guidance)
商用本番環境(Production)においては、自己署名証明書ではなく、信頼された認証局(CA)が発行した正式な証明書の使用を推奨します。
- Let’s Encrypt / ACME:
パブリックドメインで運用する場合は、Certbot や Caddy 等で自動取得した公式証明書と秘密鍵をそれぞれ
tls.crtおよびtls.keyとして配置してください。 - 企業内認証局 (Enterprise CA / プライベートPKI):
社内ルートCA配下で発行されたサーバー証明書(中間証明書を含むフルチェーン)を
tls.crtに、対応する秘密鍵をtls.keyに配置してください。