OpenSSL 1.1 API 的迁移问题

很多人都知道,OpenSSL 1.1.0版本有意介绍了从以前的版本引入了重大的API更改,以前公开可见的大量数据结构已经变得不透明,添加了访问器函数以获取和设置这些现在不透明结构中的一些字段。值得注意的是,使用不透明数据结构对库通常是有益的,因为可以改变这些数据结构而不破坏ABI。因此,这些变化的总体方向在很大程度上是合理的。

然而,虽然API更改通常是进展所必需的,但OpenSSL似乎没有转换计划,完全忽视了这些更改对整个开源生态系统的影响。

目前来看唯一可接受的方案是把重任转接给每个使用OpenSSL 的软件项目中:在依然兼容以前API的情况下推进每个项目中把核心代码迁移为OpenSSL 1.1 ,同时保持与先前API的兼容性(例如php-src和openssh-portable)。这迫使每个项目提供自己的向后兼容性,肯定会引发一些问题,引入潜在的安全问题或内存泄漏。

由于许多因素,使用OpenSSL的软件项目不能简单地迁移到1.1 API,并且不再支持1.0 API ——在大多数情况下,他们需要继续支持这两者。首先,我不知道有任何平台已经发布OpenSSL 1.1版本 —— 任何支持OpenSSL 1.1的软件,没有平台可以使用。其次,OpenSSL 1.0.2版本支持到2019年12月31日,而OpenSSL 1.1.0只支持到2018年8月31日——显然任何LTS风格版本都会考虑使用1.0.2。

尝试与OpenSSL 1.1 协同工作的平台已经遭遇了明显的挑战 :例如,目前Debian518个中就有257个包不是针对OpenSSL 1.1 构建的。同时还存在隐藏一些问题,类似不同的类库基于不同的OpenSSL 版本但却贡献OpenSSL 数据结构的场景,这些问题都很难被察觉。因为他们只会在运行时出现。

但是,OpenSSL(仍然有)至少两个选项可以避免这种情况,使得软件项目从旧的API平滑过渡到新的API,而不是每个单独的项目都必须向后兼容至少三年(实际更长)。

我恳求OpenSSL项目认真重新考虑他们的API改变的方法,更重要的是相关的迁移,尤其是记住什么是最好的整体生态系统,而不仅仅是OpenSSL项目。我还要求使用OpenSSL的软件项目仔细考虑他们如何处理这种情况,特别是考虑他们需要多长时间携带兼容性代码和#ifs。

最后我想说的是,这不是LibreSSL的问题 —— 如果我们添加所有的OpenSSL 1.1访问器,为OpenSSL 1.0或OpenSSL 1.1编写的软件将可以与LibreSSL无缝工作。但无论如何,软件仍然必须保持与两个OpenSSL API的兼容性。

文章转载自 开源中国社区 [http://www.oschina.net]
### 回答1: openssl 1.1 是一种开源的加密库,用于提供数据的安全传输和加密/解密功能。编译好的库是已经将openssl 1.1 的源代码进行编译,生成可执行文件的库文件。 编译好的库文件可以直接供开发人员在其应用程序中使用,无需再次编译源代码。这使得开发人员能够轻松地将openssl 1.1 的加密功能集成到他们的应用程序中,提供更高的数据安全性。 编译好的库文件可以根据目标操作系统的不同进行选择和使用。例如,可以为Windows系统编译openssl库文件,也可以为Linux系统或者macOS系统编译openssl库文件。这种灵活性使得开发人员能够为特定的操作系统和应用程序要求选择合适的库文件。 使用编译好的openssl 1.1 库文件,开发人员可以实现数据加密和解密、SSL/TLS握手协议、数字签名等功能。这些功能可以帮助开发人员保护敏感数据的安全,确保数据在传输和存储过程中不被恶意攻击者窃取或篡改。 总之,编译好的openssl 1.1 库文件为开发人员提供了一种方便和高效的方式来集成强大的数据加密和安全传输功能到他们的应用程序中,提高数据的保密性和完整性。 ### 回答2: OpenSSL是一个开放源代码的软件库,它提供了一套用于实现安全通信的加密功能。OpenSSL 1.1是其最新版本,具有更高的性能和更好的安全性。 编译好的库指的是经过编译处理后的库文件,可以直接在特定操作系统中使用。对于OpenSSL 1.1编译好的库,可以在各个操作系统平台中使用,例如Windows、Linux、Mac等。 编译好的库通常可以通过以下步骤来使用: 1. 下载OpenSSL 1.1的源代码,并解压缩。 2. 执行相应的编译命令行,根据操作系统和编译选项生成所需的库文件。 3. 编译好的库会生成在指定的输出目录中,其中包括动态链接库(.dll、.so)和静态链接库(.lib、.a)以及头文件等。 4. 在开发项目中,可以将编译好的库文件加入到项目的依赖中,以供需要使用OpenSSL 1.1功能的代码使用。 使用OpenSSL 1.1编译好的库可以提供各种加密和解密算法、SSL/TLS协议支持、数字证书操作、随机数生成、哈希函数等功能,可以应用于网络通信安全、数据加密传输、身份验证等领域。 总之,OpenSSL 1.1编译好的库是一个高效且安全的软件库,可以在各个操作系统中使用,为开发者提供了实现安全通信功能的工具。 ### 回答3: OpenSSL是一个开源的密码学库,它提供了各种加密和解密算法、协议和安全服务的实现。OpenSSL 1.1OpenSSL库的一个新版本,相较于之前的版本,它提供了许多重要的改进和更新。 首先,OpenSSL 1.1提供了更好的性能和吞吐量。它进行了许多优化,从而能够更高效地执行各种加密和解密操作。这对于需要处理大量数据的应用程序来说尤为重要。 其次,OpenSSL 1.1增强了其安全性。它修复了之前版本中的一些安全漏洞,并提供了更好的防护措施,以防止潜在的攻击。它还实现了一些新的密码学算法和协议,从而能够更好地应对现代安全威胁。 此外,OpenSSL 1.1还改进了其易用性和可移植性。它提供了更友好的API和文档,使开发人员能够更轻松地使用和集成库。它还强化了对各种平台的支持,并通过解决一些兼容性问题来提高其可移植性。 最后,OpenSSL 1.1还引入了一些新功能,以满足不同应用程序的需求。例如,它增加了对密码管理和证书颁发机构的支持,使其在实现安全身份验证和授权方面更为强大。 总的来说,OpenSSL 1.1是一个经过改进和更新的开源密码学库,它提供了更好的性能、更高的安全性、更好的易用性和可移植性,以及一些新的功能。对于需要进行加密和解密操作的应用程序来说,使用这个编译好的库将能够有效地提供所需的安全性和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值