OpenSSL 3.0 简介(1)

OpenSSL3.0引入提供者概念,全面升级API接口,支持FIPS140-3标准,增强安全性与灵活性。新增EVP_KDF、EVP_MAC等接口,改进HTTP/HTTPS客户端,实现自动化自检。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在 2020 年 4 月 23 日,OpenSSL 管理委员会和 OpenSSL 技术委员会发布了 OpenSSL 3.0 Alpha1 版本,Alpha 1版本包含基本的功能加上基本的 FIPS(Federal Information Processing Standards,即“联邦信息处理标准”)模块。在 2020 年 5 月 16日发布了 OpenSSL 3.0 Alpha2 版本,在 2020 年 6 月 4 日发布了 Alpha 3 版本。这些 Alpha 系列测试版本中的代码都是试验性质的,还将不断地被修改。

许可证
        OpenSSL 3.0 系列的变化首先体现在许可证方面,OpenSSL 许可证说明所在的网址链接地址是:https://www.openssl.org/source/license.html 。OpenSSL 3.0.0之前的版本(例如: 1.0.2系列,1.1.0系列, 1.1.1系列)使用 OpenSSL 和 SSLeay 双重许可证,从 OpenSSL 3.0.0版本开始,OpenSSL 在git 仓库(其链接为:https://www.openssl.org/source/gitrepo.html)上的主分支(master branch)将不再使用以前的许可证,而是转而使用 Apache v2 许可证,其链接为:https://www.openssl.org/source/apache-license-2.0.txt。注意 3.0.0 版的非 master 分支仍然使用之前的 OpenSSL 和 SSLeay 双重许可证。

设计思想
         尽管 OpenSSL 3.0 版的设计原则说明文档(其链接为:https://www.openssl.org/docs/OpenSSL300Design.html)写得比较晦涩,但还是建议有条件的读者去仔细阅读它。本系列文章将提供针对该文档的一个比较模糊的介绍,目的是让读者能对它有一个粗略的了解。
        OpenSSL 3.0 与之前的 OpenSSL 0.9、1.0、1.1 系列版本相比,设计思想发生了非常巨大的变化。即使是对先前版本比较了解的程序员,也需要重新学习和适应。打一个比方:3.0 版之前的 OpenSSL,就好像是一个巨大的工具箱,里面有像扳手、电钻、锯子等各种各样的工具(与 API 函数对应)。用户只需要学习将要被用到的那个工具的用法,然后就可以直接调用相关的工具。OpenSSL 3.0 版里面的各种功能,不再是一大堆被动等待用户调用的基础工具集合。OpenSSL 的设计者参照 FIPS 关于密码模块的 FIPS 140 系列标准(主要是 FIPS 140-2 和 FIPS 140-3),将 OpenSSL 设计成一个符合 FIPS 140 系列标准的软件密码模块。读者可以将密码模块看作是一个自动化设备或装置,它在对外提供服务之前将会自动“上电自检”。对于软件,上电自检可以理解为当被加载到内存时,自动进行自检。自检的内容包括完整性检查和功能正确性检查,完整性检查的作用是检查这个密码模块是不是被攻击者恶意篡改过,功能正确性检查的作用是检查密码运算等服务是否工作正常,比如对于一个计算数字签名的功能,要检查签名计算是否符合算法标准,即按照算法标准规定的步骤计算得出的签名值能否通过验证。用户在使用 OpenSSL 3.0 时,不再能像以前一样直接调用一些底层密码运算的函数,比如 AES_set_encrypt_key,AES_encrypt,那种方法好像是打开工具箱直接拿取某一个需要的工具。现在只能调用高层级上经过封装的、对用户开放的接口函数,比如 EVP 接口函数。这有点像是在使用一台设备或装置(比如微波炉)时,只能使用设备面板上的几个有限的按钮。封装的作用是屏蔽掉大量的底层函数,特别是与具体算法相关的函数。与 3.0 以前版本相比,3.0 版提供了与算法无关的、形式统一的接口函数。例如 EVP 接口 API 中包含 EVP_EncryptInit_ex, EVP_EncryptUpdate 及 EVP_EncryFinal 这三个函数,可以用它们来执行对称加密。用户要做 AES、CHACHA 等多种算法的加解密时,都是通过调用这几个 EVP 函数来实现。这样做的一个好处是减轻用户负担,用户不需要去学习、记忆那些与具体算法有关、数量众多的底层密码函数,只需要掌握少量的通用函数,就足以执行多种密码运算了。

背景知识
        OpenSSL 3.0 版是参照 FIPS 140 系列标准开发的,FIPS 140 是美国国家标准与技术研究院 (NIST)制订的、定义密码模块安全要求的标准,该标准系列主要包括:
1)已作废的 FIPS 140-1,在 2001 年 FIPS 140-2 取代了它;
2)当前有效的 FIPS 140-2 标准,相关链接是 https://csrc.nist.gov/publications/detail/fips/140/2/final ,FIPS 140-2 测试认证将在 2021 年 9 月 22 日终止;
3)即将取代 FIPS 140-2 的 FIPS 140-3 标准。美国商务部长在 2019 年 3 月 22 日批准了 FIPS 140-3 ,它将在被批准时间的六个月之后(即 2019 年 9 月 22 日)正式生效,相关链接是 https://csrc.nist.gov/publications/detail/fips/140/3/final
        国内也有类似的标准,比如密码行业标准 GM/T 0028《密码模块安全技术要求》及其对应的国家标准 GB/T 37092《信息安全技术 密码模块安全要求》。
        如果想要深入理解 OpenSSL 3.0,需要了解 FIPS 140-3。

OpenSSL 3.0的新变化
1)引入了一个被称为“提供者”(Provider)的概念;所有的密码算法都将在“提供者”的概念下被实施,在 OpenSSL 3.0 中可以通过编程或设置一个配置文件的方式,来为具体的应用指定将使用哪一个提供者。
2)实施了 RFC 4210 《Certificate Management Protocol》(CMP) 中定义的证书管理协议;
3)在 libcrypto 库文件中实现了新的 HTTP 及 HTTPS 客户端,支持 GET 和 POST、重定向、普通内容及ASN.1 编码内容、代理、超时控制;
4)为了支持密钥导出函数(Key Derivation Function),增加了EVP_KDF  API 接口函数;
5)为了更好地支持 MAC(Message Authentication Code),增加了EVP_MAC API 接口函数;
6)支持Linux Kernel TLS。

<think>好的,用户想了解OpenSSL3.0的安装配置教程和常见问题解决方案。首先我需要整理安装步骤,确保符合不同操作系统的情况。用户可能是在Linux环境下安装,比如CentOS或者Ubuntu,也可能在Windows上使用VS2019,引用[4]提到了VS的环境配置,这部分需要包含进去。安装部分,需要分源码编译和包管理器安装两种方式。源码安装通常更灵活,但步骤较多,容易出错。引用[3]提到成功配置后的提示和编译安装步骤,可以借鉴。包管理器安装可能更简单,但版本可能不是最新的,需要提醒用户注意。 接下来是配置环境变量,尤其是Linux下添加软链接,引用[3]中的例子,把安装路径链接到系统目录,这样命令行可以直接调用。Windows的环境配置在VS项目中设置包含目录和库目录,引用[4]详细说明了路径设置,这部分要详细说明。常见问题方面,用户可能遇到版本冲突,比如引用[2]里用户降级到1.1.0解决了问题,但用户现在需要3.0,可能需要处理依赖问题或兼容性。编译错误需要检查系统依赖库是否安装,比如perl和make工具。还有运行时的库路径问题,比如LD_LIBRARY_PATH的设置,避免找不到动态库。 另外,引用[5]提到源码编译安装的情况,虽然针对zabbix,但同样适用于OpenSSL,特别是强调依赖版本的重要性。可能用户在使用过程中需要与其他软件集成,比如Python环境,引用[3]提到Python需要openssl支持,这也可能需要补充说明。最后,生成相关问题时要覆盖安装、配置、问题排查以及应用场景,比如如何使用OpenSSL进行加密操作,如何集成到其他项目里。确保问题能引导用户进一步探索解决方案。</think>### OpenSSL 3.0 安装配置教程 OpenSSL 3.0 是一个重要的版本更新,引入了新的API和功能(如FIPS模块支持),但也可能导致兼容性问题。以下是安装配置的核心步骤: #### 一、安装步骤 1. **源码编译安装(Linux/macOS)** - **下载源码**: ```bash git clone https://github.com/openssl/openssl.git cd openssl git checkout openssl-3.0 # 切换到3.0分支 ``` - **配置与编译**: ```bash ./config --prefix=/usr/local/openssl3 --openssldir=/usr/local/openssl3 make # 编译 make test # 可选,运行测试 sudo make install ``` - **添加环境变量**: 在`~/.bashrc`或`~/.zshrc`中添加: ```bash export PATH="/usr/local/openssl3/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/openssl3/lib64:$LD_LIBRARY_PATH" ``` 2. **包管理器安装(部分Linux发行版)** - Ubuntu/Debian: ```bash sudo apt install openssl libssl-dev ``` *注意:可能需要添加第三方仓库获取3.0版本[^5]。* 3. **Windows环境配置(VS2019)** - 安装OpenSSL 3.0 Windows二进制包(从官网下载)。 - 在VS项目中设置包含目录和库目录: - 包含目录:`C:\OpenSSL\include` - 库目录:`C:\OpenSSL\lib` - 链接器附加依赖项:`libssl.lib, libcrypto.lib`[^4]。 #### 二、常见问题解决方案 1. **版本冲突问题** - **现象**:系统存在多个OpenSSL版本(如1.1.13.0),导致命令调用混乱。 - **解决**:通过软链接指定默认版本: ```bash sudo ln -sf /usr/local/openssl3/bin/openssl /usr/bin/openssl ``` 2. **编译错误** - **依赖缺失**:确保安装`perl`、`make`、`gcc`等工具链。 - **API不兼容**:OpenSSL 3.0弃用了部分旧API,需检查代码中是否使用了`EVP_MD_CTX_create()`等旧函数[^3]。 3. **运行时库加载失败** - **现象**:`error while loading shared libraries: libssl.so.3`。 - **解决**:更新动态链接库缓存: ```bash sudo ldconfig /usr/local/openssl3/lib64 ``` #### 三、验证安装 ```bash openssl version # 预期输出:OpenSSL 3.0.x ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值