Files
LaunchPad/apps/frontend/docker-entrypoint.sh

39 lines
1.1 KiB
Bash

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