第 2 章 红帽构建的 OpenJDK 21 中的 FIPS 设置
在启动时,红帽构建的 OpenJDK 21 会检查系统 FIPS 策略是否已启用。如果启用了此策略,红帽构建的 OpenJDK 21 会执行一系列自动配置,用于帮助 Java 应用程序遵守 FIPS 要求。
这些自动配置包括以下操作:
- 为加密操作安装包含 FIPS 认证的网络安全服务(NSS)软件令牌模块的受限安全供应商列表
- 为 Java 强制 Red Hat Enterprise Linux (RHEL) FIPS 加密策略,该策略限制可用的算法和参数
如果在 JVM 实例运行时在系统中启用了 FIPS 模式,则必须重启 JVM 实例,以允许更改生效。
您可以配置红帽构建的 OpenJDK 21,以绕过上述 FIPS 自动化。例如,您可能希望通过硬件安全模块(HSM)而不是 NSS 软件令牌模块实现 FIPS 合规性。
您可以使用 system 或 安全属性 指定 FIPS 配置。
要更好地了解 FIPS 属性,您必须了解以下 JDK 属性类:
-
系统属性是前缀为
-D
的 JVM 参数,它通常采用-Dproperty.name=property.value
的形式。不需要特权访问权限来传递这些值。只有启动的 JVM 会受到配置的影响,持久性取决于存在启动程序脚本。UTF-8 编码的值对系统属性有效。 -
安全属性在
$JRE_HOME/conf/security/java.security
或java.security.properties
系统属性指向的文件中提供。修改$JRE_HOME/conf/security/java.security
文件中的值需要特权访问权限。对此文件的任何修改都会保留,并影响到同一红帽构建 OpenJDK 21 部署的所有实例。非基本拉丁 Unicode 字符必须使用\uXXXX
编码。
当系统和安全属性的名称相同并且设置为不同的值时,系统属性会优先使用。根据配置,属性可能会影响具有不同名称的其他属性。
有关安全属性及其默认值的更多信息,请参阅 java.security
文件。
以下列表详细介绍了影响红帽构建的 OpenJDK 21 的 FIPS 配置的属性:
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
| 安全性 |
|
当设置为 |
| System |
|
当设置为 |
| System |
|
当设置为 |
| 安全性 |
|
当红帽构建的 OpenJDK 21 处于 FIPS 模式时,此属性设置默认密钥存储类型。支持的值有 |
除了前面描述的设置外,也可以将特定配置应用到在 FIPS 模式下使用 NSS DB 密钥存储。这些密钥存储由 SunPKCS11
安全提供程序和 NSS 软件令牌处理,后者是安全供应商的 PKCS facilities
后端。
以下列表详细介绍了红帽构建的 OpenJDK 21 的 NSS DB FIPS 属性:
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
| 系统或安全性 |
| 指向 NSS DB 位置的文件系统路径。
此属性的语法与 |
| 系统或安全性 |
|
您可以使用此属性以以下形式传递 NSS DB PIN:
注意
如果加密操作需要 NSS DB 身份验证,且状态没有被验证,Red Hat build of OpenJDK 21 会执行带有这个 PIN 值的隐式登录。应用可以通过在任何加密操作前调用 |
执行安全评估,以便您可以决定保护所存储密钥和证书的完整性和机密性的配置。此评估应考虑威胁、上下文信息和其他安全措施,如操作系统用户隔离和文件系统权限。例如,默认配置值可能不适用于存储键的应用程序,并在多用户环境中运行。使用 RHEL 中的 modutil
工具创建和管理 NSS DB 密钥存储,并使用 certutil
或 keytool
导入证书和密钥。
其他资源
- 有关启用 FIPS 模式的更多信息,请参阅 将系统切换到 FIPS 模式。