轮换签名密钥(OSS)
备注:
如果你正在使用 Logto Cloud,你可以在控制台 UI 中轮换签名密钥,请参考本教程。
Logto OSS 从 v1.8 开始支持轮换签名密钥。
Logto OIDC 签名密钥,也被称为“OIDC 私钥”和“OIDC Cookie 密钥”,是在 Logto 登录会话中用于加密 JWT(访问令牌 (Access tokens) 和 ID 令牌 (ID tokens))以及浏览器 Cookie 的签名密钥。
定期轮换你的签名密钥可以降低密钥泄露的潜在风险。Logto 建议你至少每年轮换一次签名密钥。
轮换 OIDC 私有签名密钥
使用下面的 CLI 命令生成新的 OIDC 私有签名密钥。新密钥将在重启后自动生效。
可用选项:
--type (可选)用于你的 JWT 的签名密钥算法。
可选值为 "rsa" 或 "ec"。默认为 "ec"。
- CLI
- local
- npx
logto db config rotate oidc.privateKeys --type rsa
npm run cli db config rotate oidc.privateKeys -- --type rsa
npx @logto/cli db config rotate oidc.privateKeys -- --type rsa
轮换 OIDC Cookie 密钥
使用下面的 CLI 命令生成新的 OIDC Cookie 密钥。新密钥将在重启后自动生效。
- CLI
- local
- npx
logto db config rotate oidc.cookieKeys
npm run cli db config rotate oidc.cookieKeys
npx @logto/cli db config rotate oidc.cookieKeys
之前的密钥怎么办?{what-about-the-previous-keys}
Logto 的密钥轮换命令不会删除你之前的签名密钥,这些密钥会保留在数据库中,除非你手动删除它们。
另外,在删除之前的密钥时要小心,因为这可能会导致意外问题。建议在一段时间内(例如 2 周)同时保留新密钥和旧密钥,直到你确认所有用户都已迁移到新密钥。
故障排查
在 Cloudflare Zero Trust 中将 Logto 作为 OIDC 提供商使用
如果你打算将 Logto 作为 Cloudflare Zero Trust 的 OIDC 提供商,请注意它不支持使用 ECDSA 算法的 OIDC 提供商。在轮换 OIDC 私有签名密钥时,请确保通过在轮换命令中指定 --type rsa
来使用 RSA 算法:
- CLI
- local
- npx
logto db config rotate oidc.privateKeys --type rsa
npm run cli db config rotate oidc.privateKeys -- --type rsa
npx @logto/cli db config rotate oidc.privateKeys -- --type rsa