generated from Dicken/dickendock
39 lines
1.1 KiB
Bash
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 "$@"
|