OpenSSL 3.4.0 现已发布,这是一个功能版本。包含以下潜在重大或不兼容的变化:
- 弃用 TS_VERIFY_CTX_set_* 函数并添加具有改进语义的替代 TS_VERIFY_CTX_set0_* 函数
- 重新设计了 Windows 上 OPENSSLDIR/ENGINESDIR/MODULESDIR 的使用,这样以前的 build time locations 现在可以在运行时通过 registry keys 定义
- FIPS provider 中的 X25519 和 X448 密钥交换实现未经批准且具有
fips=no
property。 - SHAKE-128 和 SHAKE-256 实现不再具有默认摘要长度。这意味着这些算法不能与 EVP_DigestFinal/_ex() 一起使用,除非之前设置了
xoflen
参数。 - 如果在配置文件中设置
config_diagnostics=1
,将导致 SSL_CTX_new() 和 SSL_CTX_new_ex() 在 ssl 模块配置出现错误时返回错误信息。 - 对于所有最低 TLS 版本 > 1.0 的连接,TLS 客户端 hello 中将使用空的重新协商扩展,而不是空的重新协商 SCSV。
- 弃用 SSL_SESSION_get_time()、SSL_SESSION_set_time() 和 SSL_CTX_flush_sessions() 函数,转而使用各自的
_ex
函数,这些函数在具有 Y2038 安全time_t
的平台上是 Y2038 安全的。
此版本添加了以下新功能:
- 支持直接获取复合签名算法,如 RSA-SHA2-256,包括新的 API functions
- FIPS provider 中的 FIPS 指标支持以及未来 FIPS 140-3 验证所需的 FIPS provider 的各种更新
- PKCS#12 中 RFC 9579 (PBMAC1) 的实现
- 使用静态链接的 jitterentropy 库的新随机种子源 RNG JITTER
- 新选项
-not_before
和-not_after
,用于明确设置使用req
和x509
应用程序创建的证书的开始和结束日期 - 支持 RFC 9150 和 TLS 1.3 中的 TLS_SHA256_SHA256 和 TLS_SHA384_SHA384 纯密码套件
- 支持在 CMP 中请求 CRL
- 支持与属性证书相关的其他 X.509v3 扩展
- 初始属性证书 (RFC 5755) 支持
- 可以自定义 ECC 组初始化以使用预先计算的值来节省 CPU 时间,并通过 P-256 实现使用此功能
更新公告:https://openssl-library.org/news/openssl-3.4-notes/index.html