summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vpn/docker-compose.yml2
-rw-r--r--vpn/entrypoint.sh17
2 files changed, 18 insertions, 1 deletions
diff --git a/vpn/docker-compose.yml b/vpn/docker-compose.yml
index 1961a99..c973e8c 100644
--- a/vpn/docker-compose.yml
+++ b/vpn/docker-compose.yml
@@ -8,7 +8,7 @@ services:
- SYS_MODULE
volumes:
- ./certs/server.crt:/etc/swanctl/x509/server.crt:ro
- - ./certs/server-chain.crt:/etc/swanctl/x509ca/server-chain.crt:ro
+ - ./certs/server-chain.crt:/tmp/server-chain.crt:ro
- ./certs/server.key:/etc/swanctl/private/server.key:ro
- ./users.conf:/etc/strongswan/users.conf:ro
environment:
diff --git a/vpn/entrypoint.sh b/vpn/entrypoint.sh
index febdfef..b80528a 100644
--- a/vpn/entrypoint.sh
+++ b/vpn/entrypoint.sh
@@ -1,6 +1,23 @@
#!/bin/sh
set -e
+# 中間証明書チェーンを個別ファイルに分割(strongSwan は複数証明書 PEM の最初しか読まないため)
+n=0
+file=""
+while IFS= read -r line; do
+ case "$line" in
+ "-----BEGIN CERTIFICATE-----")
+ n=$((n+1))
+ file="/etc/swanctl/x509ca/chain-${n}.crt"
+ printf '%s\n' "$line" > "$file"
+ ;;
+ *)
+ [ -n "$file" ] && printf '%s\n' "$line" >> "$file"
+ ;;
+ esac
+done < /tmp/server-chain.crt
+echo "Loaded ${n} intermediate CA certs from chain"
+
# IP フォワーディング有効化(network_mode: host では書き込み不可の場合があるのでエラー無視)
sysctl -w net.ipv4.ip_forward=1 2>/dev/null || true
sysctl -w net.ipv6.conf.all.forwarding=1 2>/dev/null || true