From 47e47957cc363511d1de5f78caff7ff77ed7d0c7 Mon Sep 17 00:00:00 2001 From: yyamashita Date: Wed, 1 Jul 2026 10:48:36 +0900 Subject: Serve YE1 intermediate CA cert for Android VPN trust chain Android (XREAL Beam Pro) can't validate the server cert because it lacks the Let's Encrypt YE1 hierarchy in its system trust store. The fix: - Serve YE1 cert at https://vpn.yyamashita.com/ca.pem via Caddy - Android VPN profile: set CA certificate to this downloaded cert - install.sh / renew-cert.sh now extract and copy YE1 to caddy dir Co-Authored-By: Claude Sonnet 4.6 --- vpn/install.sh | 4 ++++ vpn/renew-cert.sh | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'vpn') diff --git a/vpn/install.sh b/vpn/install.sh index 3dc29bc..42088c0 100644 --- a/vpn/install.sh +++ b/vpn/install.sh @@ -45,6 +45,10 @@ awk '/BEGIN CERTIFICATE/{n++} n==1' "$CERT_DIR/server.crt" > "$CERT_DIR/server-l awk '/BEGIN CERTIFICATE/{n++} n>1' "$CERT_DIR/server.crt" > "$CERT_DIR/server-chain.crt" mv "$CERT_DIR/server-leaf.crt" "$CERT_DIR/server.crt" +# Android 用 CA 証明書 (YE1 中間 CA) を Caddy で配信 +awk '/BEGIN CERTIFICATE/{n++} n==1' "$CERT_DIR/server-chain.crt" > "$CADDY_DIR/ca.pem" +echo "Android 用 CA 証明書を ${CADDY_DIR}/ca.pem に配置しました。" + echo "証明書を $CERT_DIR/ に保存しました。" # VPN コンテナ起動 diff --git a/vpn/renew-cert.sh b/vpn/renew-cert.sh index 50f8784..b199350 100644 --- a/vpn/renew-cert.sh +++ b/vpn/renew-cert.sh @@ -14,5 +14,11 @@ docker compose -f "$CADDY_DIR/docker-compose.yml" exec -T caddy \ cat "${CADDY_CERT_BASE}.key" > certs/server.key chmod 600 certs/server.key -docker compose exec vpn swanctl --load-creds --noprompt +# チェーン分割 + Android 用 CA 証明書更新 +awk '/BEGIN CERTIFICATE/{n++} n==1' certs/server.crt > certs/server-leaf.crt +awk '/BEGIN CERTIFICATE/{n++} n>1' certs/server.crt > certs/server-chain.crt +mv certs/server-leaf.crt certs/server.crt +awk '/BEGIN CERTIFICATE/{n++} n==1' certs/server-chain.crt > "$CADDY_DIR/ca.pem" + +docker compose restart echo "完了。証明書を更新してリロードしました。" -- cgit v1.2.3