Rotacionar a chave RSA do central-backend¶
Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-06-30
Coordene com o PowerSync
O serviço expõe uma chave pública por vez, e o PowerSync cacheia o JWKS (≈ 5 min). Trocar a chave invalida tokens assinados com a anterior até o PowerSync renovar o cache. Planeje, ou siga a rotação suave abaixo.
O que é¶
Substitui o par de chaves RSA que assina os JWT (ex. por suspeita de vazamento ou política de rotação).
Quando usar¶
- Suspeita de comprometimento da chave privada.
- Rotação periódica de segurança.
Pré-requisitos¶
- Acesso ao Coolify e ao cofre de segredos.
opensslna máquina local.
Passos (rotação suave, sem downtime)¶
-
Reduza a expiração dos tokens antes de rotacionar, para encurtar a janela de tokens antigos válidos:
Redeploy e aguarde a expiração natural dos tokens já emitidos.AUTH_TOKEN_EXPIRATION_MINUTES=5 -
Gere a nova chave (ver Gerar as chaves e segredos):
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out auth_private_v2.pem base64 -w0 auth_private_v2.pem > auth_private_v2_b64.txt -
Atualize as variáveis no Coolify com um
kidnovo:AUTH_KEY_ID=auth-2 AUTH_PRIVATE_KEY=<conteúdo de auth_private_v2_b64.txt> -
Redeploy. O JWKS passa a expor a chave nova (
kid=auth-2). -
Aguarde o PowerSync renovar o cache (~10 min por segurança). Novos tokens já saem com a chave nova.
-
Restaure
AUTH_TOKEN_EXPIRATION_MINUTESao valor normal (1440) e redeploy.
Verificação¶
curl -sf https://auth.xadm.biz/.well-known/jwks.json | jq '.keys[0].kid'
# Esperado: "auth-2"
- Faça um login e confirme que o app conecta ao PowerSync sem erro de assinatura.
Reversão¶
Se o PowerSync passar a rejeitar tokens, reverta as variáveis (AUTH_KEY_ID e
AUTH_PRIVATE_KEY) para a chave anterior e redeploy; aguarde o cache do PowerSync
renovar. Em último caso, rollback do deploy (Coolify → Deployments).