generated from Dicken/dickendock
Bugfixes (Dark Mode, Dropdown-Kontrast, IP-Suche), Lesezeichen-Ausbau (Farbe, Beschreibung, Favicon), Zuletzt-besucht, Spaeter-lesen, kombinierter Import-Export, Scanner-Reconciliation, Admin-Ueberarbeitung
This commit is contained in:
@@ -8,9 +8,22 @@ CERT_FILE="$CERT_DIR/fullchain.pem"
|
||||
KEY_FILE="$CERT_DIR/privkey.pem"
|
||||
CERT_HOST_FILE="$CERT_DIR/.cert-host"
|
||||
HOST="${LAUNCHPAD_HOST:-localhost}"
|
||||
EXTRA_HOST="${LAUNCHPAD_EXTRA_HOST:-}"
|
||||
|
||||
mkdir -p "$CERT_DIR"
|
||||
|
||||
# Baut einen SAN-Eintrag (IP:... oder DNS:...) für einen einzelnen Hostwert.
|
||||
san_entry_for() {
|
||||
case "$1" in
|
||||
*[0-9]*.*[0-9]*.*[0-9]*.*[0-9]*)
|
||||
echo "IP:$1"
|
||||
;;
|
||||
*)
|
||||
echo "DNS:$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [ -f "$CERT_FILE" ] && [ -f "$KEY_FILE" ] && [ ! -f "$CA_CERT" ]; then
|
||||
# fullchain.pem/privkey.pem wurden vom Nutzer eingebunden (z. B. eigenes
|
||||
# Zertifikat) und es gibt keine von uns erzeugte CA dazu -> nichts anfassen.
|
||||
@@ -27,24 +40,22 @@ else
|
||||
-out "$CA_CERT" 2>/dev/null
|
||||
fi
|
||||
|
||||
# Server-Zertifikat nur neu erzeugen, wenn es noch keins gibt oder sich
|
||||
# LAUNCHPAD_HOST geändert hat (dann würde die alte SAN nicht mehr passen).
|
||||
# Kombinierte Kennung aus HOST + EXTRA_HOST, um zu erkennen ob sich einer
|
||||
# von beiden geändert hat -> dann Server-Zertifikat neu ausstellen. Die CA
|
||||
# selbst bleibt davon unberührt (bereits erteiltes Gerätevertrauen gilt weiter).
|
||||
HOST_SIGNATURE="$HOST|$EXTRA_HOST"
|
||||
NEED_NEW_LEAF=false
|
||||
if [ ! -f "$CERT_FILE" ] || [ ! -f "$KEY_FILE" ]; then
|
||||
NEED_NEW_LEAF=true
|
||||
elif [ "$(cat "$CERT_HOST_FILE" 2>/dev/null)" != "$HOST" ]; then
|
||||
elif [ "$(cat "$CERT_HOST_FILE" 2>/dev/null)" != "$HOST_SIGNATURE" ]; then
|
||||
NEED_NEW_LEAF=true
|
||||
fi
|
||||
|
||||
if [ "$NEED_NEW_LEAF" = "true" ]; then
|
||||
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
|
||||
SAN="$(san_entry_for "$HOST"),DNS:localhost,IP:127.0.0.1"
|
||||
if [ -n "$EXTRA_HOST" ] && [ "$EXTRA_HOST" != "$HOST" ]; then
|
||||
SAN="$SAN,$(san_entry_for "$EXTRA_HOST")"
|
||||
fi
|
||||
|
||||
EXTFILE=$(mktemp)
|
||||
printf "subjectAltName=%s\nbasicConstraints=CA:FALSE\nkeyUsage=digitalSignature,keyEncipherment\nextendedKeyUsage=serverAuth\n" "$SAN" > "$EXTFILE"
|
||||
@@ -56,8 +67,8 @@ else
|
||||
-out "$CERT_FILE" 2>/dev/null
|
||||
|
||||
rm -f "$EXTFILE" "$CERT_DIR/server.csr"
|
||||
echo "$HOST" > "$CERT_HOST_FILE"
|
||||
echo "[entrypoint] Server-Zertifikat für '$HOST' erzeugt und mit lokaler CA signiert."
|
||||
echo "$HOST_SIGNATURE" > "$CERT_HOST_FILE"
|
||||
echo "[entrypoint] Server-Zertifikat erzeugt (SAN: $SAN), mit lokaler CA signiert."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user