From e663b007d473f23c612f3b631da5fd63cf06bf7a Mon Sep 17 00:00:00 2001 From: RubenRWU Date: Thu, 15 Oct 2026 15:54:36 +0200 Subject: [PATCH] =?UTF-8?q?SECRET=5FKEY:=20verst=C3=A4ndliche=20Fehlermeld?= =?UTF-8?q?ung=20mit=20Befehl=20zum=20Erzeugen=20eines=20g=C3=BCltigen=20S?= =?UTF-8?q?chl=C3=BCssels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 --- .env.example | 3 ++- app/services/crypto.py | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 78a90d3..537d761 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,8 @@ # ── Pflicht ─────────────────────────────────────────────────────────────────── # Datenbank: Postgres (docker-compose setzt sie selbst) oder SQLite für lokale Entwicklung DATABASE_URL=sqlite:///./.data/onyscribe-admin.db -# Master-Key für Secrets in der DB UND Session-Cookies (Fernet-Key). SICHERN – ohne ihn sind Secrets unlesbar. +# Master-Key für Secrets in der DB UND Session-Cookies (Fernet-Key, 44 Zeichen). SICHERN – ohne ihn sind Secrets unlesbar. +# python3 -c "import base64,os; print(base64.urlsafe_b64encode(os.urandom(32)).decode())" # python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" SECRET_KEY= diff --git a/app/services/crypto.py b/app/services/crypto.py index d988ccb..3510ead 100644 --- a/app/services/crypto.py +++ b/app/services/crypto.py @@ -4,7 +4,14 @@ from cryptography.fernet import Fernet from app.settings import SECRET_KEY -_f = Fernet(SECRET_KEY.encode()) +try: + _f = Fernet(SECRET_KEY.encode()) +except ValueError as exc: + raise RuntimeError( + "SECRET_KEY ist kein gültiger Fernet-Schlüssel (erwartet: 32 Zufallsbytes in URL-sicherem Base64, 44 Zeichen, endet meist mit „=“). " + "Erzeugen mit: python3 -c \"import base64,os; print(base64.urlsafe_b64encode(os.urandom(32)).decode())\" " + "– und in Coolify als SECRET_KEY setzen (außerhalb von Coolify sichern; ohne ihn sind die Secrets in der Datenbank nicht entschlüsselbar)." + ) from exc def encrypt(v: str) -> str: