Twenty’nin iki bağımsız anahtar ailesi vardır: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.
- JWT imzalama anahtarları — asimetrik ES256 anahtar çiftleri (
kidetiketli)core."signingKey"içinde saklanır ve erişim/yenileme belirteçlerini imzalamak ve doğrulamak için kullanılır. - Bekleme hâlindeki şifreleme anahtarı — OAuth belirteçlerini, uygulama değişkenlerini, imzalama anahtarlarının gizli anahtarlarını, hassas yapılandırma değerlerini ve
enc:v2:zarfı içindeki TOTP gizli anahtarlarını şifrelemek için kullanılanENCRYPTION_KEY.
APP_SECRET, geriye dönük uyumluluk için tutulan eski bir gizlidir: ENCRYPTION_KEY ayarlanmamış olduğunda bekleme hâlindeki şifreleme / oturum çerezi geri dönüşü olarak davranır ve hâlâ önceden var olan HS256 erişim belirteçlerini doğrular. Kullanımdan kaldırılacaktır.
JWT imzalama anahtarları
Her anahtar birpublicKey (önceden verilmiş belirteçleri doğrulayabilmesi için süresiz olarak saklanır), şifrelenmiş bir privateKey (yalnızca anahtar geçerli iken kullanılır), bir isCurrent bayrağı (aynı anda tam olarak bir satır) ve isteğe bağlı bir revokedAt taşır.
Geçerli anahtarı döndür
Etkinleştirmek içinSIGNING_KEY_ROTATION_DAYS değerini ayarlayın: günlük bir cron görevi, mevcut anahtar bu eşikten daha eski olduğunda yeni bir güncel anahtar oluşturur. Önceki anahtarlar iptal edilmez, bu nedenle onlarla imzalanmış belirteçler doğrulanmaya devam eder. Otomatik döndürmeyi devre dışı bırakmak için değişkeni ayarlamadan bırakın.
Otomatik döndürme v2.6+ ile birlikte gelir.
Bir anahtarı iptal et (yalnızca sızıntı / acil durum için)
Geçerli olmayan bir satırda Settings → Admin Panel → Signing keys → Revoke. Şifrelenmiş özel materyali siler,revokedAt değerini ayarlar ve o kid ile imzalanmış mevcut tüm belirteçleri reddeder.
ENCRYPTION_KEY anahtarını döndür
Aşağıda açıklanan
secret-encryption:rotate komutu v2.6+ ile birlikte gelir.enc:v2:\<keyId>:\<payload> olarak sarılır; burada \<keyId>, ham anahtardan türetilen 8 onaltılık önekidir. Döndürme çevrimiçi ve kaldığı yerden devam ettirilebilir.
-
Yeni bir anahtar oluşturun:
openssl rand -base64 32. -
.enviçinde her iki anahtarı yan yana yapılandırın, ardından yeniden başlatın:Yeni yazmalar yeni anahtarı kullanır, mevcut satırlar hâlâ geri dönüş anahtarıyla şifresi çözülerek okunur. -
Mevcut satırları yeniden şifreleyin:
Komut altı siteyi dolaşır (
connected-account-tokens,application-variable,application-registration-variable,signing-key-private-keys,sensitive-config-storage,totp-secrets). Bir SQL filtresi, zaten yeni\<keyId>üzerinde olan satırları atlar, bu nedenle komut idempotenttir: gerektiğinde yarıda kesip yeniden çalıştırın. Herhangi bir satır başarısız olursa sıfır olmayan kodla çıkar — yeniden denemek için tekrar çalıştırın.Bayrak Açıklama -s, --site \<site>Yalnızca tek bir siteyle sınırla. -b, --batch-size \<n>Her yığın başına satır sayısı (varsayılan 200, en fazla5000).-d, --dry-runŞifresini çöz + bellekte yeniden şifrele, UPDATEişlemini atla. -
--dry-runsıfır kalan satır gösterdiğinde geri dönüş anahtarını bırakın:FALLBACK_ENCRYPTION_KEYdeğerini kaldırın ve yeniden başlatın.
Eski APP_SECRET desteği
Hiç ENCRYPTION_KEY ayarlamamış eski örnekler, APP_SECRET değerini bekleme hâlindeki şifreleme anahtarı (ve ondan türetilen oturum çerezi gizli anahtarı) olarak kullanır. Bu yol, geriye dönük uyumluluk için korunmuştur ancak kullanımdan kaldırılmıştır — özel bir ENCRYPTION_KEY ayarlayın ve ondan çıkmak için yukarıdaki döndürme prosedürünü izleyin. APP_SECRETin kendisi eski HS256 erişim belirteçlerini doğrulamak için kullanılmaya devam eder.