跳转到内容

FIPS 模式配置

FIPS 模式让系统只使用通过 FIPS 140-3 标准验证的加密算法模块(OpenSSL、GnuTLS、NSS、内核 crypto API 等)。它是美国联邦系统和许多金融、医疗合规场景的硬性要求。EL 系统内置了完整的 FIPS 支持,启用后由 crypto-policies 统一收口所有加密组件的策略。

启用 FIPS 后:

  • crypto-policies 切换到 FIPS 子策略,OpenSSL、GnuTLS 等库自动禁用未验证算法(MD5、DES、RC4 等)
  • 内核 crypto API 进入 FIPS 模式,自检(self-test)在启动时执行
  • 不合规的算法调用会直接报错,而不是悄悄降级
启用 FIPS 模式并重启生效
$ sudo fips-mode-setup --enable
$ sudo systemctl reboot
重启后验证状态
$ fips-mode-setup --check
FIPS mode is enabled.
$ update-crypto-policies --show
FIPS

如需关闭:

禁用 FIPS 模式
$ sudo fips-mode-setup --disable
$ sudo systemctl reboot

RHEL 10 起 fips-mode-setup 已弃用,标准做法是设置 fips=1 内核启动参数:

RHEL 10 启用 FIPS:加内核参数并重启
$ sudo grubby --update-kernel=ALL --args="fips=1"
$ sudo systemctl reboot
RHEL 10 验证 FIPS 状态
$ cat /proc/sys/crypto/fips_enabled
1
$ update-crypto-policies --show
FIPS

重建版包含与 RHEL 相同的 crypto-policies 与内核 FIPS 支持,启用方法一致。但注意:“已验证模块”以各发行版自家的 FIPS 验证状态为准——严格合规场景请先确认所用发行版的验证清单与范围,拿不准时直接用 RHEL(其验证状态有 Red Hat 官方背书)。

  • 主要云平台提供预启用 FIPS 的官方镜像(搜索 “FIPS” 镜像即可),新机直接合规
  • 使用 Image Mode / bootc 时,在 Containerfile 中声明:
在 bootc 镜像中启用 FIPS
FROM registry.redhat.io/rhel10/rhel-bootc:latest
RUN mkdir -p /etc/kernel/cmdline.d && \
echo "fips=1" > /etc/kernel/cmdline.d/fips.conf && \
update-crypto-policies --set FIPS

典型报错如 digital envelope routines::unsupported——说明应用调用了未验证算法(MD5、旧 TLS 版本)。处理顺序:升级应用到支持 FIPS 的版本 > 调整应用配置改用合规算法 > 向 Red Hat/厂商反馈。不建议为了绕开报错改回 DEFAULT 策略,那会让整个系统失去合规状态。

互为补充:OpenSCAP 用 CIS/PCI 等基线扫描系统配置;FIPS 是其中加密合规格子项的系统级实现。审计脚本常用 fips-mode-setup --check 判定。OpenSCAP 合规扫描可以覆盖这一项的自动化检查。

  • 在新系统或重启窗口内启用——切换涉及内核参数与自检,越早越好
  • 先盘点业务依赖的加密库版本,老旧应用(JDK 8 早期版、旧 OpenSSL 绑定)最容易被卡
  • 集群类系统(controller/worker)需要一次性全部切换,避免混跑