跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    FIPS 模式配置

    FIPS 模式让系统只使用通过 FIPS 验证的加密算法模块(OpenSSL、GnuTLS、NSS、内核 crypto API 等)。验证级别按版本不同:RHEL 8 的多数模块仍是 FIPS 140-2 验证,RHEL 9/10 逐步转为 140-3——具体到某个模块以 NIST CMVP 清单与 Red Hat 的合规文档为准。它是美国联邦系统和许多金融、医疗合规场景的硬性要求。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=1 内核启动参数(fips-mode-setup 在 10 上的可用性请以官方文档为准;下面的内核参数写法在各版本都有效):

    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(RHEL 10 上可能不可用),更稳的判定是读内核开关:cat /proc/sys/crypto/fips_enabled(1 = FIPS 已启用)。OpenSCAP 合规扫描可以覆盖这一项的自动化检查。

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