Twenty are două familii de chei independente:Documentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
- Chei de semnare JWT — perechi de chei asimetrice ES256 (etichetate cu
kid) stocate încore."signingKey", folosite pentru a semna și verifica tokenurile de acces / reîmprospătare. - Cheia de criptare pentru date în repaus —
ENCRYPTION_KEY, folosită pentru a cripta token-urile OAuth, variabilele aplicației, cheile private de semnare, valorile de configurare sensibile și secretele TOTP în interiorul unui învelișenc:v2:.
APP_SECRET este un secret vechi păstrat pentru compatibilitate retroactivă: când ENCRYPTION_KEY nu este setată, acționează ca mecanism de rezervă pentru criptarea datelor în repaus / cookie-urile de sesiune și încă verifică token-urile de acces HS256 existente anterior. Va fi marcat ca învechit.
Chei de semnare JWT
Fiecare cheie are unpublicKey (păstrat pe termen nelimitat pentru a putea verifica token-urile emise anterior), un privateKey criptat (folosit doar cât timp cheia este curentă), un indicator isCurrent (exact un rând la un moment dat) și un câmp opțional revokedAt.
Rotește cheia curentă
SetațiSIGNING_KEY_ROTATION_DAYS pentru a activa rotația automată: un job cron zilnic va emite o nouă cheie curentă odată ce cea existentă este mai veche decât acest prag. Cheile anterioare nu sunt revocate, astfel încât token-urile semnate cu ele continuă să fie verificate. Lăsați variabila nesetată pentru a dezactiva rotația automată.
Rotația automată este disponibilă începând cu versiunea v2.6+.
Revocă o cheie (numai în caz de scurgere / urgență)
Settings → Admin Panel → Signing keys → Revoke pe un rând care nu este curent. Șterge materialul privat criptat, seteazărevokedAt și respinge fiecare token existent semnat sub acel kid.
Rotește ENCRYPTION_KEY
Comanda
secret-encryption:rotate descrisă mai jos este disponibilă în v2.6+.enc:v2:\<keyId>:\<payload>, unde \<keyId> este un prefix hexazecimal de 8 caractere derivat din cheia brută. Rotirea are loc online și poate fi reluată.
-
Generează o cheie nouă:
openssl rand -base64 32. -
Configurează ambele chei în paralel în
.env, apoi repornește:Noile scrieri folosesc noua cheie, rândurile existente încă sunt decriptate prin mecanismul de rezervă. -
Re-criptează rândurile existente:
Comanda parcurge șase locații (
connected-account-tokens,application-variable,application-registration-variable,signing-key-private-keys,sensitive-config-storage,totp-secrets). Un filtru SQL omite rândurile care sunt deja pe noul\<keyId>, astfel încât comanda este idempotentă: întrerupe și rulează din nou după nevoie. Iese cu un cod de eroare nenul dacă vreun rând eșuează — rulează din nou pentru a reîncerca.Opțiune Descriere -s, --site \<site>Limitează la o singură locație. -b, --batch-size \<n>Rânduri per lot (implicit 200, maxim5000).-d, --dry-runDecriptează + re-criptează în memorie, omite UPDATE. -
Elimină mecanismul de rezervă odată ce
--dry-runarată zero rânduri rămase: eliminăFALLBACK_ENCRYPTION_KEYși repornește.
Compatibilitate veche pentru APP_SECRET
Instanțele mai vechi care nu au setat niciodată ENCRYPTION_KEY folosesc APP_SECRET ca cheie de criptare pentru date în repaus (și ca secret pentru cookie-urile de sesiune, derivat din aceasta). Acest mecanism este păstrat pentru compatibilitate retroactivă, dar este învechit — setează o ENCRYPTION_KEY dedicată și urmează procedura de rotire de mai sus pentru a migra de la el. APP_SECRET în sine rămâne în uz pentru a verifica token-urile de acces HS256 vechi.