RHEL 10 系统加密策略:DEFAULT/LEGACY/FUTURE
This content is not available in your language yet.
RHEL 的系统加密策略不是“改 openssl.cnf”,而是一组由 crypto-policies 生成的配置:OpenSSL、GnuTLS、OpenSSH、Kerberos 都读它。本页讲怎么查、怎么试切、怎么回退,以及一个常见的误读。
在 PVE 390 rhel10-lab(RHEL 10.2 x86_64)上实际执行:
update-crypto-policies --showupdate-crypto-policies --is-appliedupdate-crypto-policies --checkopenssl ciphers -v 'PROFILE=SYSTEM' | wc -lupdate-crypto-policies --set LEGACY --no-reloadopenssl ciphers -v 'PROFILE=SYSTEM' | wc -lupdate-crypto-policies --set FUTURE --no-reloadopenssl ciphers -v 'PROFILE=SYSTEM' | wc -lupdate-crypto-policies --set DEFAULT --no-reloadE3 记录:plans/content-expansion/evidence/rhel/rhel-crypto-policies/run.json(15 步,含每步输出 sha256)。
| 策略 | 用途 | 实测套件数(PROFILE=SYSTEM) |
|---|---|---|
DEFAULT | 生产默认,兼容 TLS 1.2/1.3 主流套件 | 53 |
LEGACY | 兼容旧系统/旧设备 | 61 |
FUTURE | 前瞻,禁用旧协议/旧算法 | 9 |
套件数会随 OpenSSL 版本与策略版本变化,不要把 53/61/9 当成永久常量;它们是本实验 RHEL 10.2 的观测值。
update-crypto-policies --show # DEFAULTupdate-crypto-policies --is-applied # The configured policy is appliedcat /etc/crypto-policies/config # DEFAULTupdate-crypto-policies --check # 无输出=生成文件与配置一致--show 看配置,--is-applied 看配置与生成文件是否一致,--check 做逐文件核对。三者都过,才说明策略“已生效到文件层”。
试切:先 --no-reload
Section titled “试切:先 --no-reload”sudo update-crypto-policies --set LEGACY --no-reloadupdate-crypto-policies --showopenssl ciphers -v 'PROFILE=SYSTEM' | wc -l # 61
sudo update-crypto-policies --set FUTURE --no-reloadopenssl ciphers -v 'PROFILE=SYSTEM' | wc -l # 9
sudo update-crypto-policies --set DEFAULT --no-reloadupdate-crypto-policies --is-applied--no-reload 不触发 reload 脚本,适合在远程/生产机上先验证“切过去会不会把 SSH/TLS 弄断”,再决定是否重启服务。
常见误读:grep sha1 不是“允许 SHA-1 证书”
Section titled “常见误读:grep sha1 不是“允许 SHA-1 证书””DEFAULT 下:
$ openssl ciphers -v 'PROFILE=SYSTEM' | grep -ci sha114$ openssl ciphers -v 'PROFILE=SYSTEM' | grep -i sha1 | head -3ECDHE-ECDSA-AES256-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1ECDHE-RSA-AES256-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1这里的 SHA1 是 MAC,不是证书签名算法;这些是 TLSv1/SSLv3 的旧套件。FUTURE 下 grep -ci sha1 为 0。要判断“是否接受 SHA-1 签名证书”,用真实证书跑:
openssl s_client -connect host:443 -servername host </dev/null 2>&1 | grep -E 'Protocol|Cipher|Verify'sudo update-crypto-policies --set DEFAULT --no-reloadsudo update-crypto-policies --is-appliedsudo update-crypto-policies --check# 需要运行中服务也回退时,重启对应服务或系统如果切换后 SSH 断连,用 PVE 控制台登录,执行上面的回退命令;不要在不清楚 FUTURE 影响的情况下直接 --set FUTURE(不带 --no-reload)。
- 切前记录
--show、--is-applied、--check; - 用
PROFILE=SYSTEM统计套件,不要用裸openssl ciphers; - 先
--no-reload试切,确认业务/SSH 不受影响; - 不把
grep sha1当作证书签名策略; - 切换后重启/ reload 服务,再
--is-applied复核; - 保留控制台/带外通道。
未实测与边界
Section titled “未实测与边界”- 未测试
FUTURE下 SSH 客户端/服务端的实际握手(只看了套件列表); - 未测试
--no-reload后 sshd/httpd 的 reload 行为; - 未测试自定义策略(
/etc/crypto-policies/policies/)与子策略; - 未测试 FIPS 模式与
FIPS策略的交互。
- RHEL 10 采用评估 — OpenSSL 3.5 与 DEFAULT 策略
- RHEL 安全基线与加固 — 系统加固
- 官方:Using system-wide cryptographic policies