搜索

14.4. strict 模式

download PDF

fips-mode 选项,该选项会在启用 fips 功能时自动设置为 non-strict。这意味着,在"非批准的模式下运行 BCFIPS"。更安全的替代方案是使用 --features=fips --fips-mode=strict,在这种情况下,BouncyCastle FIPS 将使用"approved 模式"。使用该选项会对加密和安全算法产生更严格的安全要求。

注意

在 strict 模式中,默认的密钥存储类型(以及默认的信任存储类型)是 BCFKS。如果要使用不同的密钥存储类型,则需要在适当的类型中使用 --https-key-store-type 选项。如果要使用 truststore,可能需要类似的命令。

在启动服务器时,您可以检查启动日志是否包含 KC 供应商,请注意 批准模式,如下所示:

KC(BCFIPS version 1.000203 Approved Mode, FIPS-JVM: enabled) version 1.0 - class org.keycloak.crypto.fips.KeycloakFipsSecurityProvider,

14.4.1. 严格模式中的加密限制

  • 如上一节中所述,strict 模式可能无法用于 pkcs12 密钥存储。需要使用前面提到的另一个密钥存储(如 bcfks)。在使用 strict 模式时,红帽构建的 Keycloak 不支持 jkspkcs12 密钥存储。有些示例是在管理控制台或 realm 键中的 java-keystore 供应商导入或生成 OIDC 或 SAML 客户端的密钥存储。
  • 用户密码必须是 14 个字符或更长时间。红帽构建的 Keycloak 默认使用基于 PBKDF2 的密码编码。BCFIPS 批准模式要求密码至少使用 PBKDF2 算法使用 112 位(有效 14 个字符)。如果要允许较短的密码,将 SPI password -hashing 的供应商 pbkdf2-sha256 的供应商 pbkdf2-sha256 的属性 max-padding 设置为值 14 以在验证此算法创建的哈希时提供额外的 padding。此设置还向后兼容之前存储的密码。例如,如果用户的数据库位于非FIPS 环境中,并且您有较短的密码,并且您希望在批准模式中使用 BCFIPS 的红帽构建 Keycloak,则密码应该可以正常工作。因此,您可以在启动服务器时使用如下选项:
--spi-password-hashing-pbkdf2-sha256-max-padding-length=14
注意

使用上述选项不会破坏 FIPS 合规性。但请注意,不再有密码是很好的做法。例如,现代浏览器自动生成的密码与此要求匹配,因为它们超过 14 个字符。

  • RSA 密钥 1024 位无法正常工作(2048 是最小的)。这适用于红帽构建的 Keycloak 域本身使用的密钥(管理控制台中 Keys 选项卡的Realm 密钥),但也适用于客户端密钥和 IDP 密钥
  • HMAC SHA-XXX 密钥必须至少为 112 位(或 14 个字符长)。例如,如果您使用带有客户端身份验证的 OIDC 客户端,带有 Client Secret (或 OIDC 标记中的 client-secret-jwt ),则您的客户端 secret 应该至少为 14 个字符。请注意,为了获得良好的安全性,建议使用红帽构建的 Keycloak 服务器生成的客户端 secret,这始终不满意。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.