blob: 56cc1d666b98efb37c3e1123e4011bd28bc12395 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
DOMAIN="vpn.yyamashita.com"
CADDY_DIR="/app/infra/caddy"
CADDY_CERT_BASE="/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${DOMAIN}/${DOMAIN}"
echo "証明書を更新中..."
mkdir -p certs
if ! docker compose -f "$CADDY_DIR/docker-compose.yml" exec -T caddy \
cat "${CADDY_CERT_BASE}.crt" > certs/server.crt; then
echo "Error: 証明書の取得に失敗しました。Caddyfile に ${DOMAIN} が設定されているか確認してください。"
exit 1
fi
docker compose -f "$CADDY_DIR/docker-compose.yml" exec -T caddy \
cat "${CADDY_CERT_BASE}.key" > certs/server.key
chmod 600 certs/server.key
# チェーン分割: 1枚目=リーフ、残り=中間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
# 中間 CA 証明書を Caddy で配信(クライアントが手動インストールする場合に使用)
awk '/BEGIN CERTIFICATE/{n++} n==1' certs/server-chain.crt > "$CADDY_DIR/ca.pem"
echo "証明書を更新しました。"
bash "$(pwd)/deploy.sh"
|