搜索

使用 FIPS 在 RHEL 上配置红帽构建的 OpenJDK 11

download PDF
Red Hat build of OpenJDK 11

Red Hat Customer Content Services

摘要

Red Hat build of OpenJDK 是 Red Hat Enterprise Linux 平台上的红帽产品。在带有 FIPS 的 RHEL 中配置红帽构建的 OpenJDK 11 指南提供了 FIPS 概述,并解释了如何使用 FIPS 启用和配置红帽构建的 OpenJDK。

提供有关红帽构建的 OpenJDK 文档的反馈

要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。

流程

  1. 单击以下链接 以创建 ticket
  2. Summary 中输入问题的简短描述。
  3. Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
  4. Submit 创建问题,并将问题路由到适当的文档团队。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

第 1 章 联邦信息处理标准(FIPS)简介

联邦信息处理标准(FIPS)提供了改进跨计算机系统和网络的安全与互操作性的指南和要求。FIPS 140-2 和 140-3 系列适用于硬件和软件级别的加密模块。美国国家标准与技术研究院使用可搜索处理和批准的加密模块列表实施 加密模块验证计划

Red Hat Enterprise Linux (RHEL)提供了一种集成框架,可在系统范围内启用 FIPS 140-2 合规性。当在 FIPS 模式下运行时,使用加密库的软件包会根据全局策略自行配置。大多数软件包都提供了一种更改默认对齐行为的方法,以满足兼容性或其他需求。

Red Hat build of OpenJDK 11 是一个 FIPS 策略感知型软件包。

其他资源

第 2 章 以 FIPS 模式配置红帽构建的 OpenJDK 11

Red Hat build of OpenJDK 11 会检查系统是否在启动时启用 FIPS 模式。如果是,它会根据全局策略自行配置 FIPS。从 RHEL 8.3 开始,这是默认行为。以前的 RHEL 8 版本需要将 com.redhat.fips 系统属性设置为 true 作为 JVM 参数。例如,-Dcom.redhat.fips=true

注意

如果在 JVM 实例运行时在系统中启用了 FIPS 模式,需要重启实例才能使更改生效。

有关如何启用 FIPS 模式的更多信息,请参阅 将系统切换到 FIPS 模式

您可以配置红帽构建的 OpenJDK 11,以绕过全局 FIPS 对齐。例如,您可能希望通过硬件安全模块(HSM)而不是红帽构建的 OpenJDK 提供的方案启用 FIPS 合规性。

以下是红帽构建的 OpenJDK 11 的 FIPS 属性:

  • security.useSystemPropertiesFile

    • 安全属性位于 $JAVA_HOME/conf/security/java.security 或 文件中定向到 java.security.properties
    • 需要特权访问权限来修改默认的 java.security 文件中的值。
    • 永久配置。
    • 当设置为 false 时,全局 FIPS 和 crypto-policies 对齐都会被禁用。默认情况下,它被设置为 true
  • java.security.disableSystemPropertiesFile

    • 作为参数传递到 JVM 的系统属性。例如,-Djava.security.disableSystemPropertiesFile=true
    • 非特权访问权限足够。
    • 非持久性配置。
    • 当设置为 true 时,全局 FIPS 和 crypto-policies 对齐都会被禁用;生成与 security.useSystemPropertiesFile=false 安全属性相同的效果。如果这两个属性都被设置为不同的行为,则 java.security.disableSystemPropertiesFile 覆盖。默认情况下,它被设置为 false
  • com.redhat.fips

    • 作为参数传递至 JVM 的系统属性。例如,-Dcom.redhat.fips=false
    • 非特权访问权限足够。
    • 非持久性配置。
    • 当设置为 false 时,禁用 FIPS 对齐,同时仍然应用全局 crypto-policies。如果将任何上述属性设置为禁用 crypto-policies 对齐,则此属性无效。换句话说,crypto-policies 是 FIPS 校准的先决条件。默认情况下,它被设置为 true

第 3 章 红帽构建的 OpenJDK 11 中的默认 FIPS 配置

安全供应商

红帽构建的 OpenJDK 安全策略由全局 java 安全策略文件控制。您可以在 $JRE_HOME/lib/security/java.security 处找到 java 安全策略文件。

启用 FIPS 模式后,红帽构建的 OpenJDK 将安装的安全供应商替换为以下供应商(以降序排列):

SunPKCS11-NSS-FIPS
  • 使用网络安全服务(NSS)软件令牌初始化的 密码套件(PKCS facilities 后端)。NSS 服务帐户令牌配置如下:

    • name = NSS-FIPS
    • nssLibraryDirectory = /usr/lib64
    • nssSecmodDirectory = /etc/pki/nssdb
    • nssDbMode = readOnly
    • nssModule = fips
  • NSS 库实现 FIPS 兼容的软件令牌。另外,RHEL 中对 FIPS 策略的识别。
SUN
  • 对于 X.509 证书只支持。确保您的应用程序没有使用这个供应商的其他加密算法。例如,MessageDigest.getInstance ("SHA-256", Security.getProvider ("SUN")) 可以正常工作,但导致一个非FIPS 兼容的 MessageDigest 服务。
SunEC
  • 对于 SunPKCS11 辅助帮助程序。确保您的应用程序没有被明确使用此供应商。
SunJSSE
  • 使用 SunPKCS11-NSS-FIPS 供应商初始化 TLS 引擎所需的所有加密原语,包括密钥派生。

crypto-policies

启用 FIPS 模式后,红帽构建的 OpenJDK 从全局 crypto-policies 获取加密算法的配置值。您可以在 /etc/crypto-policies/back-ends/java.config 中找到这些值。您可以使用 RHEL 中的 update-crypto-policies 工具以一致的方式管理 crypto-policies。

注意

在 OpenJDK 的 FIPS 模式的 Red Hat build 中可能无法使用 crypto-policies 批准算法。当 NSS 库中没有与 FIPS 兼容的实现,或者红帽构建的 OpenJDK 的 SunPKCS11 安全供应商不支持它时,会出现这种情况。

信任 Anchor 证书

Red Hat build of OpenJDK 在 FIPS 模式下使用全局信任 Anchor 证书存储库。您可以在 /etc/pki/java/cacerts 中找到此存储库。使用 RHEL 中的 update-ca-trust 工具以一致的方式管理证书。

密钥存储

使用 FIPS 模式时,红帽构建的 OpenJDK 使用 NSS DB 作为密钥的只读 PKCS postStart 存储。因此,store .type 安全属性被设置为 PKCS11。您可以在 /etc/pki/nssdb 找到 NSS DB 存储库。使用 RHEL 中的 modutil 工具来管理 NSS DB 密钥。

SunPKCS11 供应商配置属性

SunPKCS11 供应商包括增强使用原生资源的配置属性,如密钥对象。SunPKCS11 供应商必须使用其原生资源来与原生 PKCS11 库一起工作。

表 3.1. SunPKCS11 供应商配置属性
属性类型描述

destroyTokenAfterLogout

布尔值

默认值为 false。如果设置为 true,则当应用调用 SunPKCS11 供应商实例的 logout () 方法时,底层令牌对象将由 SunPKCS11 提供程序实例删除,并释放资源。这会在执行 logout () 方法调用后导致 SunPKCS11 供应商不可用,因此不要将 PKCS11 添加到系统供应商列表中。

cleaner.shortInterval

整数

默认值为 2000 毫秒(ms)。属性定义清理线程从清除队列中删除 no-longer-needed 原生 PKCS11 引用的频率,以释放原生内存。

注: 如果清除队列中没有原生 PKCS11 引用,清理线程将切换为使用 cleaner.longInterval 属性值,清理器线程会在队列中尝试删除过程超过 200 次。

cleaner.longInterval

整数

默认值为 60000 毫秒(ms)。属性定义清理线程在非忙碌期间检查原生 PKCS11 引用的频率。

注: 当线程检测到清除队列中的原生 PKCS11 引用时,清理器线程切换会使用 cleaner.shortInterval 属性值。

更新于 2024-05-10

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.