EL 9:OpenSSL 3.0
EL 9 的 OpenSSL 从 1.1.1 跨到 3.0,这是 OpenSSL 十多年来的最大架构调整:加密实现改为可插拔的 provider,而一批不安全的旧算法被移入默认不加载的 legacy provider。依赖旧哈希或旧密码套件的应用,会在升级后第一次握手/校验时失败。
这是什么变化
Section titled “这是什么变化”OpenSSL 3.0 把算法实现从引擎(engine)模型迁移到 provider 模型:
- default provider:AES、SHA-2/3、RSA、EC、ChaCha20 等现代算法;
- legacy provider:MD4、MD2、RC2、RC4、Blowfish、CAST、IDEA、SEED、单 DES、RIPEMD160 等;
- base / null / fips provider:编码、空实现与 FIPS 验证模块。
legacy provider 默认不加载:应用请求 MD4 之类的算法会直接报错(如 unsupported / digital envelope routines::unsupported),而不是像 1.1 时代那样照常工作。
同时,EL 9 的加密策略继续作用于 OpenSSL:DEFAULT 策略本身就会拒绝弱算法,legacy provider 解决的是”策略允许但 3.0 默认不加载”的那一层。
EL 8 → EL 9 对比
Section titled “EL 8 → EL 9 对比”| 项 | EL 8 | EL 9 |
|---|---|---|
| OpenSSL 版本 | 1.1.1 | 3.0.x |
| 算法架构 | engine | provider |
| MD4/RC4/DES 等 | 默认可用 | 在 legacy provider,默认不加载 |
| 查看 provider | 无此概念 | openssl list -providers |
- 老应用与老文件格式:使用 MD4 哈希的旧备份/旧协议客户端(部分 SMB 旧实现、旧版数据库驱动、旧 PFX/P12 文件)会报
unsupported类错误。 - 自研代码:直接调用
EVP_md4()等低层 API 的程序需要改走显式加载 legacy provider,或换用现代算法。 - 证书与 TLS:现代 TLS 不受影响;问题集中在旧密码套件与旧哈希签名,这部分同时受加密策略约束。
openssl list -providersOPENSSL_CONF=/etc/crypto-policies/back-ends/opensslcnf.config openssl list -algorithms | grep -i md4处置顺序建议:
- 换算法:MD4 → SHA-256,RC4/DES → AES-GCM,旧签名证书重签;
- 应用侧显式加载 legacy provider(代码中
OSSL_PROVIDER_load(NULL, "legacy")); - 确属外部不可控组件时,评估 FIPS/加密策略 与 legacy 的组合配置,限定影响范围。
- EL 8:全系统加密策略 — update-crypto-policies 的机制
- FIPS 模式 — FIPS provider 与合规场景
- EL 9:工具链全面更新 — 同版本的其他换代内容
- EL 10:后量子加密 — OpenSSL 3.5 的新方向