HTTPS im lokalen Netz (Port 8443, selbstsigniertes Zertifikat, optional mkcert)

This commit is contained in:
2026-07-19 16:03:29 +02:00
parent fc1ea4fa70
commit a695159b1d
8 changed files with 185 additions and 34 deletions

View File

@@ -0,0 +1,38 @@
#!/bin/sh
set -e
CERT_DIR="/etc/nginx/certs"
CERT_FILE="$CERT_DIR/fullchain.pem"
KEY_FILE="$CERT_DIR/privkey.pem"
# Falls der Nutzer eigene Zertifikate eingebunden hat (siehe README, z. B.
# per mkcert erzeugt), diese nicht überschreiben.
if [ ! -f "$CERT_FILE" ] || [ ! -f "$KEY_FILE" ]; then
HOST="${LAUNCHPAD_HOST:-localhost}"
mkdir -p "$CERT_DIR"
# IP-Adresse oder Hostname? Browser verlangen bei IP-Zugriff eine
# IP-SAN, ein DNS-Name genügt da nicht.
case "$HOST" in
*[0-9]*.*[0-9]*.*[0-9]*.*[0-9]*)
SAN="IP:$HOST,DNS:localhost,IP:127.0.0.1"
;;
*)
SAN="DNS:$HOST,DNS:localhost,IP:127.0.0.1"
;;
esac
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout "$KEY_FILE" \
-out "$CERT_FILE" \
-subj "/CN=$HOST" \
-addext "subjectAltName=$SAN" \
2>/dev/null
echo "[entrypoint] Selbstsigniertes HTTPS-Zertifikat für '$HOST' erzeugt."
echo "[entrypoint] Der Browser zeigt dafür eine Sicherheitswarnung - siehe README fuer eine Variante ohne Warnung (mkcert)."
else
echo "[entrypoint] Verwende eingebundenes Zertifikat unter $CERT_DIR."
fi
exec "$@"