简介
OpenSSL 是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL/TLS 协议实现、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1 编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL 编解码、OCSP 协议、数字证书验证、PKCS7 标准实现和 PKCS12 个人数字证书格式实现等功能。
发布时间策略
https://www.openssl.org/policies/general/release-policy.html
OpenSSL 的发布计划遵循一年发布两次的模式,每年4月和10月发布新版本。多个版本可能同事处于活跃状态,从而导致发布周期重叠。每个版本可分为以下几个阶段:
- 规划阶段:持续过程,为发布定义阶段提供输入,
- 发布定义:定义发布储备,持续 4 周,
- 开发:功能开发从 20 周到 24 周不等,
- 发布:解决社区在预发布中发现的问题,长达6周,
- Alpha:此阶段的功能开发已经完成,正在处理社区的反馈,测试、错误修复和文档更新正在进行中;
- Beta:此阶段表示库已经接近最终版本,
- Final:最终版本,此阶段没有代码修复,没有文档修改,仅作发布前的必要工作。比如:更新已知问题、颁发数字签名等。
- 支持:支持维护阶段。
- 完全支持:在最终版本发布后,常规版本将完全支持一年,LTS 版本将支持 4 年,
- 维护支持:完全支持期结束后,立即开始“维护支持“阶段,为期一年,主要重点是修复安全问题。
发布策略说明
发布策略:https://www.openssl.org/policies/releasestrat.html
从 OpenSSL 3.0 的版本号格式变更为:MAJOR.MINOR.PATCH,此格式保证在相同 MAJOR 版本间的 API/ABI 兼容。在这之前,OpenSSL 保证相同 MAJOR.MINOR 版本间的 API/ABI 兼容。
- MAJOR: 导致API/ABI不兼容的更改时递增,
- MINOR: 增加API/ABI兼容的特性功能时递增,
- PATCH: 修复缺陷时递增。
OpenSSL 发布策略中包含 2 种类型版本:正式的发行版(major release)和预发行版(pre-release)。
-
正式发行版本(major release):分为长期支持版本和非长期支持版本,
-
长期支持版本(LTS):至少支持 5 年,至少每 4 年指定一次长期支持版本,
-
非长期支持版本:至少维护支持 2 年,
-
在支持的最后一年,OpenSSL 不承诺修复出安全问题之外的其他内容。
-
-
预发布版本(pre-release):alpha 和 beta 版,
-
alpha:功能可能是不完整的,不一定实现了所有新的API,
-
beta:功能完成,只会修复缺陷,不会新增功能。
-
版本生命周期
现在时间是 2024 年 04 月:
OpenSSL 1.1.1 是长期支持版本(LTS),原先策略支持到2023-09-11,
OpenSSL 1.1.0 支持到 2019-09-11,
OpenSSL 1.0.2 是长期支持版本(LTS),支持到2019-12-31。
关于 OpenSSL 当前和未来版本的生命周期策略如下:
- 3.2 版本将支持到 2025-11-23,
- 3.1 版本将支持到 2025-03-14,
- 3.0 版本将支持到 2026-09-07(LTS),
- 1.1.1, 1.0.2 版本将不再支持,提供对1.1.1, 1.0.2的扩展支持,以访问这些版本的安全修复补丁,
- OpenSSL 1.1.0, 1.0.1, 1.0.0 和 0.9.8 版本已不再支持。
版本号语义
在上面的章节提到 OpenSSL 从 3.0 开始版本号的语义会稍微有点变化,需要关注 OpenSSL 的两个宏:
|
|
对应的 OpenSSL 提供了两个 API 接口来获取上述两个宏的值:
|
|
其中,OPENSSL_VERSION_TEXT
宏的值如 "OpenSSL 1.0.1a 15 Oct 2015"
。OpenSSL 3.0 与之前版本的区别在于OPENSSL_VERSION_NUMBER
宏即OpenSSL_version_num
返回值
的表达形式不同。
在 3.0 之前,OpenSSL 的语义如下(以 OpenSSL 1.1.1w 版本为例):
status:0 表示开发(dev),1~14表示测试版(beta),f 表示发布版(release)。
|
|
从 3.0 开始,删除了 fix 和 status 语义,只保留了 主版本号、次要版本号和修复版本号。
|
|
OpenSSL 3.0 变化
https://www.openssl.org/docs/man3.0/man7/migration_guide.html
因为是一个大版本的改动(从1.1.1到3.0),所以并不能保证之前的应用程序可以正常工作。
许可证的变更:从旧的 OpenSSL/SSLeay License 变更为 Apache License v2.
版本控制方案变更:格式变为MAJOR.MINOR.PATCH
,相比于 OpenSSL 1.1.1及更低版本补丁级别由原来版本号末尾的字母表示(比如 OpenSSL 1.1.1k),变更由版本号中的PATCH表示。
其他更多特性变更见链接:/docs/man3.0/man7/migration_guide.html (openssl.org)
产品路线图
Last Updated:11 January 2024
OpenSSL 3.3 是下一个计划发布的版本,计划于 2024年4月发布。该版本计划引入在服务器端支持 multi-stream QUIC 特性,以及其他社区内贡献的功能。
稳定版更新策略
https://www.openssl.org/policies/technical/stable-release-updates.html
稳定版本(stable release)是值从 MAJOR 和 MINOR 版本及其更新的系列版本。
补丁版本(patch release)是稳定版本的更新。
缺陷修复(bug fix)是指对库、模块、应用程序以及构建系统功能的修复,包括对一些意外行为的修复,比如:
-
内存泄漏
-
崩溃
-
挂起/死锁或竞争条件
-
越界读写
-
读取未初始化值
-
使用释放后的内存
-
…..
安全策略
https://www.openssl.org/policies/general/security-policy.html
向 OpenSSL 报告安全问题。
参考引用
/policies/general/release-policy.html
[ Release Strategy ] - /policies/releasestrat.html