#!/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 "$@"