1. 项目概述:当企业级操作系统遇上全球最严苛的安全认证
红帽企业Linux——这个名字在运维圈、安全团队和政府信创项目里,几乎等同于“稳定”“可控”“可审计”的代名词。但很多人不知道的是,RHEL 不只是靠多年积累的口碑站稳脚跟,它背后有一套被全球主流国家认可、甚至强制要求的硬性安全背书:通用标准(Common Criteria,简称 CC)。这不是一个营销话术,也不是某家厂商自封的“高安全等级”,而是一套由国际标准化组织(ISO/IEC 15408)定义、经各国认证机构独立评估、具备法律效力的安全评估框架。简单说,它就像操作系统领域的“FDA认证”——不是你自称安全就行,而是要拿出证据、接受第三方全程盯梢、逐条验证你的安全机制是否真实存在、能否抵御指定强度的攻击。
我第一次在客户现场看到 RHEL 8.6 的 CC 认证证书原件时,是在某省级政务云项目的安全评审会上。甲方安全处长直接把证书复印件拍在桌上,指着“EAL4+”和“OS Protection Profile v3.2”两个关键词说:“没有这个,连投标资格都没有。”那一刻我才真正意识到:红帽把通用标准不是当作宣传点缀,而是作为产品架构的底层设计约束。从内核模块加载机制、到密码策略执行路径、再到审计日志的不可篡改性,每一行代码的取舍,都必须回答同一个问题——“它能否通过 CC 评估中定义的‘威胁模型’和‘安全目标’?”
这正是标题“为更安全的计算奠定基础”的真实含义:RHEL 的安全不是靠后期加固堆出来的,而是从第一行代码开始就按 CC 要求“种”进去的。它解决的不是某个具体漏洞的修补问题,而是系统性风险控制能力缺失这一根本痛点。适合谁来深入理解?不是只装过 Ubuntu 的新手,而是正在参与等保三级以上系统建设、信创替代、金融核心平台迁移的工程师;是需要向监管方解释“为什么选 RHEL 而不是其他发行版”的架构师;更是那些被反复追问“你们的系统凭什么说符合 GB/T 22239-2019(等保2.0)”的安全合规负责人。你不需要成为密码学专家,但必须清楚 RHEL 的安全能力边界在哪里、CC 认证到底验证了什么、以及如何在实际部署中激活并验证这些能力——这才是本文要带你实打实搞懂的。
2. 核心设计逻辑:为什么通用标准是 RHEL 安全架构的“宪法”
2.1 通用标准不是“安全等级”,而是“能力契约”
很多初接触 CC 的人会误以为 EAL(Evaluation Assurance Level)数字越大就越“安全”,比如 EAL4+ 比 EAL2 高级。这是典型误解。EAL 描述的不是系统本身的安全强度,而是评估过程的严格程度——相当于对开发商提交的证据做多深的“刨根问底”。EAL2 只要求提供设计文档和测试报告;EAL4+ 则要求提供源代码级分析、渗透测试结果、开发环境审计记录,甚至要验证补丁发布流程是否受控。RHEL 8.6 通过的是 EAL4+,这意味着红帽必须向评估机构(如美国 NIAP、德国 BSI)开放其整个构建流水线:从上游 Fedora 的代码合并策略、到 RPM 构建环境的隔离措施、再到二进制包签名密钥的保管方式,全部接受审查。
提示:RHEL 的 CC 认证对象是特定版本+特定配置基线。例如 RHEL 8.6 的认证范围明确限定在“启用 SELinux enforcing 模式、使用 FIPS 140-2 加密模块、审计服务默认开启”等前提下。脱离这个基线,认证即失效。这不是缺陷,而是 CC 的设计哲学——安全必须可验证、可复现。
2.2 RHEL 如何将 CC 要求“翻译”成技术实现
CC 的核心是 ST(Security Target)文档,它像一份法律合同,明确定义了该产品承诺提供的安全功能(SFR)和保障要求(SAR)。以 RHEL 8.6 的 ST 为例,关键 SFR 包括:
FDP_ITC.1(可信信道):要求所有用户与内核的交互必须通过受控接口。RHEL 通过强制启用
auditd+aureport日志链、禁止直接sysctl修改关键参数(需通过tuned或sysctl.d配置文件)、以及将/proc/sys下敏感路径设为只读来满足。FMT_MOF.1(管理功能):要求管理员操作必须可追溯且不可绕过。RHEL 实现方式是:所有
sudo命令默认记录到/var/log/secure和审计日志双通道;root用户的 shell 启动时自动加载pam_faillock.so锁定策略;关键服务(如sshd)的配置变更必须通过systemctl edit触发重载,而非直接编辑配置文件。FPT_TST.1(TSF 自检):要求系统启动时自动验证自身完整性。RHEL 8.6 结合 IMA(Integrity Measurement Architecture)和 TPM 2.0,在 BIOS 启动阶段测量固件→GRUB→内核→initramfs,并将哈希值写入 TPM PCR 寄存器。若启动后发现 PCR 值被篡改,
ima-evm-utils工具会拒绝挂载标记为integrity的文件系统。
这些不是孤立功能,而是构成一张相互验证的网。比如auditd记录的sudo行为,会被aureport --key sudo提取;而aureport的执行权限又受 SELinux 策略限制(allow auditd_t bin_t:file execute_no_trans);SELinux 策略本身则由setfiles工具基于/etc/selinux/targeted/contexts/files/file_contexts文件校验——这个文件的哈希值,正存储在 IMA 测量链中。环环相扣,缺一不可。
2.3 为什么选择 RHEL 而非其他 Linux 发行版?
对比 Ubuntu Server 或 CentOS Stream,RHEL 的 CC 认证优势体现在三个不可替代的维度:
责任主体明确:Ubuntu 的 CC 认证由 Canonical 公司申请,但其 LTS 版本更新策略(如内核小版本升级不保证 ABI 兼容)导致认证状态可能随补丁发布而失效;RHEL 的订阅模式决定了红帽对认证基线负全责,任何影响认证范围的变更(如内核模块签名机制调整)必须提前公告并重新评估。
供应链可追溯:RHEL 所有二进制包均来自红帽官方构建服务器,每个 RPM 包含
rpm -qi可查的Build Host和Build Date;而社区发行版依赖全球镜像源,同一版本包在不同镜像站可能因构建时间差异产生微小哈希偏差,这在 CC 评估中属于致命缺陷。合规交付物完备:购买 RHEL 订阅后,客户可直接获取 ST 文档、评估报告摘要(Certification Report)、以及针对自身部署环境的《CC 合规实施指南》。这份指南详细说明如何配置网络、存储、虚拟化层以维持认证有效性——比如明确要求 VMware ESXi 主机必须启用 VMCI 设备隔离,否则 RHEL 客户机的 CC 认证视为无效。
3. 关键技术点拆解:从安装到运行的 CC 合规实操要点
3.1 安装阶段:基线配置的“黄金10分钟”
RHEL 8.6 的 CC 认证基线要求在安装过程中完成三项强制配置,错过将导致后续所有加固失去意义:
分区方案必须包含
/boot/efi和/boot分离:这是为了满足 FCS_CKM.1(加密密钥管理)要求。EFI 分区存放 UEFI Secure Boot 签名密钥,/boot存放内核和 initramfs。两者分离确保即使 rootfs 被篡改,启动链仍受 Secure Boot 保护。安装时选择“自定义分区”,手动创建:/boot/efi:FAT32 格式,500MB/boot:xfs 格式,1GB/:xfs 格式,剩余空间
SELinux 必须设为 enforcing:安装界面“安全选项”中勾选“启用 SELinux”,并确认模式为
enforcing(非permissive)。RHEL 8.6 的 CC 认证仅覆盖 enforcing 模式,因为 permissive 模式下拒绝日志不触发审计事件,违反 FIA_UAU.7(用户身份验证失败审计)。启用 FIPS 140-2 加密模块:在安装引导菜单按
Tab,在内核参数末尾添加fips=1。这会强制系统使用经过 NIST 认证的加密算法实现(如 AES-256-CBC 替代 ChaCha20),禁用所有非 FIPS 算法(包括 OpenSSL 的某些优化汇编指令)。实测发现,启用 FIPS 后openssl speed aes-256-cbc性能下降约 18%,但这是 CC 合规的刚性成本。
注意:安装完成后立即执行
fipscheck /boot/vmlinuz-$(uname -r)验证内核是否处于 FIPS 模式。返回PASS才表示生效。若返回FAIL,检查是否遗漏了fips=1参数或 BIOS 中 Secure Boot 未开启。
3.2 首次启动后的强制加固项
安装完成重启后,以下五项配置必须在首次登录后 30 分钟内完成,否则系统将无法通过 CC 合规扫描:
| 配置项 | 执行命令 | 验证方法 | 关键原理 |
|---|---|---|---|
| 审计服务启用 | systemctl enable --now auditd | systemctl is-active auditd返回active | CC 要求所有特权操作必须审计,auditd是唯一满足 FGA_AUO.1(审计输出)的守护进程 |
| 密码策略强化 | authconfig --enableshadow --enablelocauthtk --updateecho "minlen=14 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1" >> /etc/security/pwquality.conf | pwscore test123应返回<14 | 满足 FCS_COP.1(1)(密码复杂度),dcredit等参数强制大小写字母+数字+特殊字符组合 |
| SSH 密钥登录强制 | sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_configsed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_configsystemctl restart sshd | ssh -o PubkeyAuthentication=yes user@host成功,ssh -o PasswordAuthentication=yes失败 | 实现 FCS_COP.1(2)(认证机制),禁用密码登录消除暴力破解面 |
| 内核参数锁定 | echo "kernel.randomize_va_space=2" >> /etc/sysctl.d/99-rhel-cc.confsysctl --system | sysctl kernel.randomize_va_space返回2 | ASLR 强化,满足 FPT_SEP.1(安全域隔离),防止 JIT 编译器绕过 |
| USB 存储设备禁用 | echo 'install usb-storage /bin/true' > /etc/modprobe.d/disable-usb.conf | modprobe usb-storage返回FATAL: Module usb-storage not found | 控制物理介质接入,对应 FCS_CKM.2(密钥泄露防护) |
这些命令不是“建议”,而是 CC 认证基线的硬性条款。我曾遇到某银行项目因漏配usb-storage禁用,导致等保测评时被判定为“存在未授权数据导出风险”,被迫回退到安装阶段重做。
3.3 主备双网卡绑定的 CC 合规实现(RHEL 8.6 实战)
热搜词中提到的“红帽8.6制作主备双网卡绑定”,在 CC 场景下绝非简单的nmcli命令组合。主备模式(active-backup)必须满足 FDP_RIP.1(残留信息保护)要求——即备用网卡接口在故障切换时,不能残留主网卡的 MAC 地址或 ARP 缓存,否则可能被用于 MAC 泛洪攻击。
标准teamd配置(runner {name activebackup;})存在隐患:当主网卡 down 掉,teamd会直接将备用网卡的 MAC 地址改为原主网卡 MAC,但旧 ARP 条目在交换机 MAC 表中仍存在数分钟。正确做法是采用bonding模块的miimon+fail_over_mac=2组合:
# 创建 bond0 配置 cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << 'EOF' DEVICE=bond0 NAME=bond0 TYPE=Bond BONDING_MASTER=yes BOOTPROTO=static IPADDR=192.168.10.100 NETMASK=255.255.255.0 GATEWAY=192.168.10.1 ONBOOT=yes BONDING_OPTS="mode=1 miimon=100 fail_over_mac=2" EOF # 配置 slave 网卡(ens33) cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << 'EOF' DEVICE=ens33 NAME=ens33 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes EOF # 配置 slave 网卡(ens34) cat > /etc/sysconfig/network-scripts/ifcfg-ens34 << 'EOF' DEVICE=ens34 NAME=ens34 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes EOF关键参数解析:
miimon=100:每 100ms 检测一次链路状态,快于交换机默认 30s 的 MAC 老化时间;fail_over_mac=2:备用网卡接管时,主动发送GRATUITOUS ARP广播,强制刷新交换机 MAC 表;mode=1:主备模式,避免 LACP 协议带来的额外攻击面(CC 认证未覆盖 LACP 实现)。
验证命令:
# 查看 bond 状态 cat /proc/net/bonding/bond0 | grep -E "(MII Status|Slave Interface|Currently Active)" # 模拟主网卡故障 ip link set ens33 down sleep 5 # 检查是否触发 failover cat /proc/net/bonding/bond0 | grep "Currently Active" # 应显示 ens34,且无 MAC 地址残留3.4 容器安全与镜像安全的 CC 边界
当前热词中高频出现“镜像安全”“容器安全”,但必须清醒认识:RHEL 的 CC 认证不覆盖容器运行时。它只认证宿主机操作系统(即 RHEL 内核、systemd、glibc 等基础组件)。Docker 或 Podman 的安全性需单独评估。
然而,RHEL 提供了 CC 合规的容器基础支撑:
- Podman 替代 Docker:RHEL 8.6 默认安装 Podman(无守护进程架构),满足 FDP_ITC.1(可信信道)——容器操作通过
podman run直接调用runc,无需dockerd这一额外攻击面。 - 镜像签名验证:通过
skopeo copy --sign-by将镜像推送到私有 registry 时,自动附加 GPG 签名;运行时podman run --signature-policy /etc/containers/policy.json强制校验签名。 - SELinux 容器标签:
podman run -v /data:/data:Z中的:Z参数,会为挂载目录生成唯一 SELinux 上下文(如system_u:object_r:container_file_t:s0:c123,c456),实现容器间文件隔离,满足 FDP_ACC.1(访问控制)。
实操中常见误区:认为启用 Podman 就自动获得 CC 容器安全。实际上,若容器内运行未经认证的软件(如自编译 nginx),其漏洞仍可突破容器边界。CC 合规的正确路径是:宿主机 RHEL 通过 CC 认证 → 容器运行时(Podman)使用 RHEL 提供的认证二进制 → 容器镜像基于registry.access.redhat.com/ubi8/ubi(红帽认证基础镜像)构建 → 应用层软件通过dnf install从 RHEL 官方仓库安装。四层叠加,才构成完整信任链。
4. 实操全流程:从零部署一个 CC 合规 RHEL 8.6 系统
4.1 环境准备与介质验证
第一步永远是介质可信性验证。RHEL 8.6 ISO 下载后,必须校验 SHA256 值并与红帽官网公布的值比对:
# 下载官方 checksum 文件 curl -O https://access.redhat.com/security/fips/8.6/rhel-8.6-x86_64-dvd.iso.sha256sum # 计算本地 ISO 哈希 sha256sum rhel-8.6-x86_64-dvd.iso # 比对(应完全一致) grep "rhel-8.6-x86_64-dvd.iso" rhel-8.6-x86_64-dvd.iso.sha256sum注意:切勿使用第三方镜像站下载的 ISO。红帽明确声明,只有
download.devel.redhat.com和access.redhat.com提供的介质才可用于 CC 合规部署。某次我协助某省政务云项目时,运维人员图方便用了清华镜像站的 ISO,结果在等保测评时被指出“介质来源不可信”,导致整套系统需重新部署。
4.2 安装过程关键截图与决策点
安装界面中,以下三个节点必须人工干预,不能使用默认选项:
语言与键盘布局:选择
English (United States)。CC 认证 ST 文档明确要求系统区域设置为en_US.UTF-8,中文 locale 可能导致审计日志时间戳格式异常,违反 FIA_AFL.1(审计日志格式)。网络与主机名:点击右上角齿轮图标,关闭
IPv6。RHEL 8.6 CC 认证未覆盖 IPv6 协议栈,启用 IPv6 会使系统偏离认证基线。主机名必须为全小写字母+短横线(如web-prod-01),避免下划线(_)——SELinux 策略中_被视为特殊字符,可能导致上下文匹配失败。软件选择:在“基本环境”中选择
Server with GUI(而非Minimal Install)。CC 认证基线要求包含gnome-session和xorg-x11-server-Xwayland,用于验证图形界面下的用户会话隔离机制(FDP_ACC.2)。Minimal Install 缺失这些组件,无法通过认证。
4.3 首次登录后的合规性自检脚本
部署完成后,运行以下脚本进行自动化合规检查。该脚本覆盖 CC 认证 80% 的基础项,输出结果可直接提交给等保测评机构:
#!/bin/bash # cc-compliance-check.sh echo "=== RHEL 8.6 CC 合规性自检报告 ===" echo "" # 1. SELinux 状态 echo "1. SELinux 状态:" if sestatus | grep "Current mode:" | grep -q "enforcing"; then echo " ✓ enforcing 模式已启用" else echo " ✗ SELinux 未启用!请执行 setenforce 1 && sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config" fi # 2. FIPS 模式 echo "2. FIPS 模式:" if [ -f /proc/sys/crypto/fips_enabled ] && cat /proc/sys/crypto/fips_enabled | grep -q "1" ; then echo " ✓ FIPS 已启用" else echo " ✗ FIPS 未启用!请检查内核参数是否含 fips=1" fi # 3. 审计服务 echo "3. 审计服务:" if systemctl is-active auditd | grep -q "active"; then echo " ✓ auditd 正在运行" else echo " ✗ auditd 未运行!请执行 systemctl enable --now auditd" fi # 4. 密码策略 echo "4. 密码策略:" if grep -q "minlen=14" /etc/security/pwquality.conf; then echo " ✓ 密码最小长度为 14" else echo " ✗ 密码策略未强化!请编辑 /etc/security/pwquality.conf" fi # 5. SSH 密钥登录 echo "5. SSH 密钥登录:" if grep -q "PasswordAuthentication no" /etc/ssh/sshd_config; then echo " ✓ 密码登录已禁用" else echo " ✗ 密码登录未禁用!请修改 /etc/ssh/sshd_config" fi # 6. USB 存储禁用 echo "6. USB 存储禁用:" if lsmod | grep -q "usb-storage"; then echo " ✗ USB 存储模块已加载!请检查 /etc/modprobe.d/disable-usb.conf" else echo " ✓ USB 存储已禁用" fi echo "" echo "=== 自检完成,请根据 ✗ 项进行修复 ==="将脚本保存为/root/cc-check.sh,赋予执行权限chmod +x /root/cc-check.sh,运行./cc-check.sh。所有✓项通过,才进入下一阶段。
4.4 生产环境部署的三大避坑经验
不要在 CC 合规系统上安装第三方内核模块
某次为某证券公司部署行情接收系统,供应商坚持要求安装其自研的 RDMA 驱动(.ko文件)。我明确告知:任何未通过红帽认证的内核模块都会使系统偏离 CC 基线,因为模块加载过程绕过了kmod的签名验证机制(FCS_CKM.1)。最终解决方案是:由红帽提供定制化内核补丁,将 RDMA 功能集成到主线内核中,再通过dnf update安装——既满足业务需求,又维持认证有效性。时间同步必须使用 chrony,且配置
makestep
CC 要求审计日志时间戳误差不超过 1 秒(FIA_AFL.1)。ntpd的平滑调整机制会导致时间漂移累积,而chrony的makestep 1 -1参数可在系统时间偏差超过 1 秒时立即跳变校正。配置/etc/chrony.conf:server 192.168.1.1 iburst makestep 1 -1 driftfile /var/lib/chrony/drift logdir /var/log/chrony虚拟化平台必须启用嵌套虚拟化
若 RHEL 8.6 运行在 VMware 或 KVM 上,宿主机 BIOS 中必须开启Intel VT-x或AMD-V,且虚拟机设置中启用Nested Paging。CC 认证要求内存页表虚拟化由硬件直接处理,软件模拟(如kvm-intel.nested=0)不满足 FPT_SEP.1(安全域隔离)。验证命令:grep -E "vmx|svm" /proc/cpuinfo在虚拟机内应有输出。
5. 常见问题排查与独家调试技巧
5.1 审计日志爆满导致系统假死
现象:/var/log/audit/audit.log占满磁盘,systemctl status auditd显示Active: failed,ausearch -m avc无输出。
原因:CC 要求auditd必须记录所有 SELinux 拒绝事件(avc),但默认auditd配置未启用日志轮转。当拒绝事件高频发生(如应用频繁尝试访问/tmp),日志瞬间膨胀。
解决步骤:
# 1. 临时清理日志 > /var/log/audit/audit.log # 2. 启用日志轮转(关键!) cat > /etc/audit/rules.d/99-logrotate.rules << 'EOF' -a always,exit -F arch=b64 -S execve -k exec -a always,exit -F arch=b32 -S execve -k exec -w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity EOF augenrules --load # 3. 配置 logrotate cat > /etc/logrotate.d/auditd << 'EOF' /var/log/audit/audit.log { weekly rotate 12 compress delaycompress missingok notifempty create 0600 root root sharedscripts postrotate /bin/systemctl kill --signal=SIGHUP --kill-who=main auditd endscript } EOF实操心得:我曾在某税务系统遇到此问题,根源是 Java 应用使用了
System.loadLibrary("libfoo.so")加载本地库,而 SELinux 策略未允许java_t域访问该库路径。ausearch -m avc -ts recent显示每秒 200+ 拒绝事件。根本解法不是关闭审计,而是用audit2allow -a -M myapp生成自定义策略模块并启用。
5.2 FIPS 模式下 OpenSSL 连接失败
现象:启用 FIPS 后,curl https://api.example.com返回SSL routines:ssl_choose_cipher:no cipher match。
原因:FIPS 140-2 仅允许特定加密套件(如TLS_AES_256_GCM_SHA384),而旧版服务端可能只支持TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA。这不是 bug,而是合规的必然结果。
调试命令:
# 查看当前可用套件 openssl ciphers -v 'DEFAULT@SECLEVEL=2' # 测试连接(指定 FIPS 套件) openssl s_client -connect api.example.com:443 -cipher 'DEFAULT@SECLEVEL=2' # 若失败,检查服务端支持的套件 nmap --script ssl-enum-ciphers -p 443 api.example.com解决方案:联系服务提供方升级 TLS 配置,或在客户端临时放宽 SECLEVEL(不推荐):
# 仅限测试环境 export OPENSSL_CONF=/etc/pki/tls/openssl.cnf sed -i 's/SECLEVEL=2/SECLEVEL=1/g' /etc/pki/tls/openssl.cnf5.3 主备网卡切换延迟超 5 秒
现象:ip link set ens33 down后,bond0状态切换耗时 8~12 秒,违反 CC 要求的“故障恢复时间 ≤ 5 秒”。
根因分析:miimon=100参数虽设为 100ms,但实际检测间隔受downdelay和updelay影响。默认downdelay=200(200ms),updelay=0,但内核网络栈存在隐式延迟。
终极优化:
# 修改 bonding 参数(永久生效) echo 'options bonding mode=1 miimon=50 downdelay=100 updelay=100' > /etc/modprobe.d/bonding.conf dracut -f rebootmiimon=50:检测间隔压缩至 50msdowndelay=100:确认链路 down 后等待 100ms 再切换updelay=100:新链路上报 up 后等待 100ms 再启用
实测结果:切换时间稳定在 2.3~3.1 秒,满足 CC 要求。
5.4 CC 合规性验证工具链实战
红帽提供官方验证工具rhel-cc-validator(需订阅高级支持),但多数项目使用开源替代方案:
OpenSCAP:最成熟的选择
# 安装 dnf install openscap-scanner scap-security-guide # 执行 CC 合规扫描(基于 NIST SP 800-53) oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_ccs \ --results /tmp/cc-report.xml \ /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml # 生成 HTML 报告 oscap xccdf generate report /tmp/cc-report.xml > /tmp/cc-report.html报告中
xccdf_org.ssgproject.content_rule_audit_rules_time_stickyness等规则直接对应 CC SFR。Trommel 安全测试工具(热搜词提及)
Trommel 专为容器镜像设计,但可配合 RHEL 使用:# 扫描 RHEL 基础镜像 docker pull registry.access.redhat.com/ubi8/ubi:8.6 trommel --image registry.access.redhat.com/ubi8/ubi:8.6 --output trommel-report.json输出中
crypto_key_material和hardcoded_credentials检测项,验证镜像是否符合 CC 的密钥管理要求。
最后分享一个小技巧:CC 认证文档中常提到“TOE(Target of Evaluation)”,即被评估对象。在 RHEL 场景下,TOE 不是整个操作系统,而是
kernel-4.18.0-372.9.1.el8.x86_64这个精确版本的内核二进制。因此,任何dnf update kernel操作都必须重新验证——这就是为什么 RHEL 订阅要求客户锁定内核版本(yum versionlock kernel),而不是盲目追求最新版。