跳转到内容
搜索 RHEL 文档

    浏览当前文档目录

    RHEL 10 系统加密策略:DEFAULT/LEGACY/FUTURE

    RHEL 的系统加密策略不是“改 openssl.cnf”,而是一组由 crypto-policies 生成的配置:OpenSSL、GnuTLS、OpenSSH、Kerberos 都读它。本页讲怎么查、怎么试切、怎么回退,以及一个常见的误读。

    在 PVE 390 rhel10-lab(RHEL 10.2 x86_64)上实际执行:

    Terminal window
    update-crypto-policies --show
    update-crypto-policies --is-applied
    update-crypto-policies --check
    openssl ciphers -v 'PROFILE=SYSTEM' | wc -l
    update-crypto-policies --set LEGACY --no-reload
    openssl ciphers -v 'PROFILE=SYSTEM' | wc -l
    update-crypto-policies --set FUTURE --no-reload
    openssl ciphers -v 'PROFILE=SYSTEM' | wc -l
    update-crypto-policies --set DEFAULT --no-reload

    E3 记录: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 的观测值。

    Terminal window
    update-crypto-policies --show # DEFAULT
    update-crypto-policies --is-applied # The configured policy is applied
    cat /etc/crypto-policies/config # DEFAULT
    update-crypto-policies --check # 无输出=生成文件与配置一致

    --show 看配置,--is-applied 看配置与生成文件是否一致,--check 做逐文件核对。三者都过,才说明策略“已生效到文件层”。

    Terminal window
    sudo update-crypto-policies --set LEGACY --no-reload
    update-crypto-policies --show
    openssl ciphers -v 'PROFILE=SYSTEM' | wc -l # 61
    sudo update-crypto-policies --set FUTURE --no-reload
    openssl ciphers -v 'PROFILE=SYSTEM' | wc -l # 9
    sudo update-crypto-policies --set DEFAULT --no-reload
    update-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 sha1
    14
    $ openssl ciphers -v 'PROFILE=SYSTEM' | grep -i sha1 | head -3
    ECDHE-ECDSA-AES256-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
    ECDHE-RSA-AES256-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
    DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1

    这里的 SHA1 是 MAC,不是证书签名算法;这些是 TLSv1/SSLv3 的旧套件。FUTURE 下 grep -ci sha1 为 0。要判断“是否接受 SHA-1 签名证书”,用真实证书跑:

    Terminal window
    openssl s_client -connect host:443 -servername host </dev/null 2>&1 | grep -E 'Protocol|Cipher|Verify'
    Terminal window
    sudo update-crypto-policies --set DEFAULT --no-reload
    sudo update-crypto-policies --is-applied
    sudo 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 复核;
    • 保留控制台/带外通道。
    • 未测试 FUTURE 下 SSH 客户端/服务端的实际握手(只看了套件列表);
    • 未测试 --no-reload 后 sshd/httpd 的 reload 行为;
    • 未测试自定义策略(/etc/crypto-policies/policies/)与子策略;
    • 未测试 FIPS 模式与 FIPS 策略的交互。