feat(turn): TURN/TLS с сертификатом, порты релея и автообновление сертификата
- install.sh: --turn-domain/--turn-cert/--turn-key, проверка наличия сертификата, копирование в /opt/glchat/certs, UFW открывает диапазон релея - livekit.yaml.tpl: relay_range_start/end, cert_file/key_file - compose: сертификаты монтируются в LiveKit read-only - systemd timer glchat-cert-refresh: ежедневно копирует обновлённый сертификат из внешнего ACME-хранилища и перезапускает LiveKit при изменении - smoke.sh: TURN-порты обязательны при включённом TURN + проверка CN сертификата
This commit is contained in:
+14
-1
@@ -121,9 +121,22 @@ else
|
||||
if ss -tulnH 2>/dev/null | grep -q ":${port} "; then
|
||||
pass "слушает ${spec}"
|
||||
else
|
||||
skip "не слушает ${spec} (проверьте конфиг LiveKit/TURN)"
|
||||
fail "не слушает ${spec} (TURN не запустился: проверьте cert_file в livekit.yaml)"
|
||||
fi
|
||||
done
|
||||
# TURN/TLS должен отдавать валидный сертификат на своём домене.
|
||||
turn_domain="$(grep -A3 '^turn:' "${GLCHAT_ETC_DIR}/livekit/livekit.yaml" 2>/dev/null |
|
||||
awk '/domain:/ {print $2; exit}')"
|
||||
if [ -n "$turn_domain" ] && command -v openssl >/dev/null 2>&1; then
|
||||
cert_cn="$(echo | timeout 8 openssl s_client -connect "127.0.0.1:${TURN_TLS_PORT}" \
|
||||
-servername "$turn_domain" 2>/dev/null |
|
||||
openssl x509 -noout -subject 2>/dev/null | sed 's/.*CN *= *//')"
|
||||
if [ "$cert_cn" = "$turn_domain" ]; then
|
||||
pass "TURN/TLS отдаёт сертификат для ${turn_domain}"
|
||||
else
|
||||
fail "TURN/TLS: сертификат не для ${turn_domain} (CN=${cert_cn:-нет})"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user