跳到主要内容

轮换签名密钥(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"。
logto db config rotate oidc.privateKeys --type rsa

使用下面的 CLI 命令生成新的 OIDC Cookie 密钥。新密钥将在重启后自动生效。

logto 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 算法:

logto db config rotate oidc.privateKeys --type rsa