Pular para conteúdo

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.
  • openssl na máquina local.

Passos (rotação suave, sem downtime)

  1. Reduza a expiração dos tokens antes de rotacionar, para encurtar a janela de tokens antigos válidos:

    AUTH_TOKEN_EXPIRATION_MINUTES=5
    
    Redeploy e aguarde a expiração natural dos tokens já emitidos.

  2. 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
    
  3. Atualize as variáveis no Coolify com um kid novo:

    AUTH_KEY_ID=auth-2
    AUTH_PRIVATE_KEY=<conteúdo de auth_private_v2_b64.txt>
    
  4. Redeploy. O JWKS passa a expor a chave nova (kid=auth-2).

  5. Aguarde o PowerSync renovar o cache (~10 min por segurança). Novos tokens já saem com a chave nova.

  6. Restaure AUTH_TOKEN_EXPIRATION_MINUTES ao 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).