centos 升级openssl 到3.0.14

摘要

升级OpenSSL版本的重要性不言而喻,主要基于两大核心考量:

首先,从安全性的角度出发,旧版本的OpenSSL可能潜藏着已知或未被广泛披露的安全漏洞。这些漏洞如同系统中的隐形后门,为恶意黑客提供了可乘之机,能够严重威胁到系统架构的稳固性及数据的完整性与保密性。因此,及时升级到最新版本的OpenSSL,意味着采纳了官方团队针对已知漏洞所发布的修复补丁,从而有效加固了系统的安全防线,减少了潜在的安全风险。

其次,从兼容性与功能拓展的角度来看,众多现代软件(包括但不限于Nginx、RabbitMQ等)的安装与部署过程均明确指定了对OpenSSL特定版本的依赖。这不仅是出于安全性的考虑,也因为这些软件在设计之初就利用了新版本OpenSSL提供的更先进、更优化的加密技术或功能特性。若系统中OpenSSL版本过旧,可能会直接导致这些关键软件的安装失败或运行异常,进而影响到整体业务流程的顺畅进行。因此,适时升级OpenSSL版本,是确保软件兼容性、提升系统整体效能与稳定性的必要举措。

openssl介绍

OpenSSL是一个开源的安全套接字层(Secure Sockets Layer,SSL)和传输层安全(Transport Layer Security,TLS)协议的实现软件。它提供了强大的加密功能,包括加密算法、哈希函数、随机数生成器等,用于实现互联网通信的安全,如网站的HTTPS加密、TLS/SSL协议的握手、证书管理等。

OpenSSL项目不仅提供了命令行工具,用于加密解密数据、生成密钥对、管理证书等操作,还提供了一套丰富的编程库(C语言接口),允许开发者在自己的应用程序中使用这些加密技术。因此,OpenSSL被广泛应用于各种服务器软件、Web服务器、操作系统、嵌入式设备以及各种需要安全通信的软件产品中。

OpenSSL 是许多软件和系统的强依赖,因为它提供了关键的安全功能,包括加密、解密、证书管理等。以下是一些依赖于 OpenSSL 的重要软件和技术:

  1. Web 服务器:如 Apache HTTP Server 和 Nginx,它们依靠 OpenSSL 来实现 HTTPS 加密通信,保护网站数据传输的安全。
  2. 数据库系统:包括 MySQL、PostgreSQL 等数据库软件,使用 OpenSSL 来加密数据库连接,确保数据存储和访问的安全性。
  3. 编程语言及其库:如 Python、Ruby、PHP、Node.js(通过其libcrypto和libssl库)等,它们在处理安全连接、加密数据时,直接或间接依赖于 OpenSSL。
  4. 操作系统:大多数Linux发行版(如Ubuntu、Debian、Fedora、CentOS等)、BSD系统以及macOS,都将OpenSSL作为系统的一部分,用于系统级的加密服务和其他安全功能。
  5. 邮件服务器:例如Postfix、Dovecot,利用OpenSSL加密邮件传输,支持SMTPS、IMAPS等安全协议。
  6. 虚拟化和云平台:如OpenStack、VMware等,在管理虚拟机和云服务时,使用OpenSSL来保障通信安全。
  7. 移动应用和嵌入式系统:很多手机应用和物联网(IoT)设备中的软件也依赖OpenSSL进行安全通信和数据保护
  8. 包管理器:包括但不限于apt(通过libssl-dev)、yum/dnf、zypper等,需要OpenSSL来安全地从远程仓库获取和验证软件包。
  9. SSL/TLS客户端和库:如curl、wget、libcurl等,它们在发起HTTPs请求或实现安全的数据传输时,依赖OpenSSL

openssl版本 

OpenSSL的版本不断更新以修复安全漏洞、增加新特性及改进性能。由于版本迭代频繁,具体版本信息会随时间变化,但大致可以分为以下几个类别:

  1. 长期支持(LTS)版本:这些版本承诺提供多年的维护和支持,适合那些需要高度稳定性和长期安全更新的应用场景。例如,OpenSSL 1.0.2系列曾是一个LTS版本,虽已过期,但在其生命周期内得到了广泛使用。当前的LTS版本是OpenSSL 1.1.1系列,该系列增加了对TLS 1.3的支持,并持续接收安全更新和错误修正。
  2. 主流版本:除了LTS版本,OpenSSL项目还会发布一些非LTS的主要版本,这些版本包含最新的特性和改进,但支持周期相对较短。例如,随着OpenSSL 3.0.0在2021年9月的发布,它成为了最新的主流版本,带来了重大的内部架构变化、新特性和安全性增强。
  3. 维护更新和补丁版本:在每个主版本下,会有多个小版本和补丁级别的更新,用以修复发现的安全漏洞和问题。这些更新通常以版本号的第三位数字表示,如OpenSSL 1.1.1a到1.1.1k等。

准备工作

升级流程

1、获取新软件

2、安装新软件

3、如果新安装的软件有问题,并不能达到自身期望,需要回滚

4、如果新安装的软件没有问题,符合自身预期,需要测试软件的各个方面是否正常

5、清理安装过程产生的多余垃圾,确认完成升级工作

开始工作

1、获取openssl

下载地址:Downloads | Library

本次下载的是3.0.14https://github.com/openssl/openssl/releases/download/openssl-3.0.14/openssl-3.0.14.tar.gz

通过ftp上传到对应的服务器/home文件夹

2、xshell 设置保持活动状态

点击文件-》当前会话属性-》保存活动状态,设置xshell保持活动,这样可以避免因服务器超时而断开链接。切记特别重要

3、查看原openssl版本

openssl version

4、查看openssl安装路径

升级工作

1、解压openssl

tar -zxvf openssl-3.0.14.tar.gz

2、进入解压后的目录

cd openssl-3.0.14

3、更新yum

为了保持依赖的最新

yum update

4、安装编译所需的依赖

openssl编译过程中需要安装 perl-IPC-Cmd,否则无法成功编译

yum install perl-IPC-Cmd

5、预编译

--prefix=/usr/local/openssl/ 指明安装的位置,本次安装到local目录,然后在进行软连接

./Configure --prefix=/usr/local/openssl/

编译成功后,如下图所示: 

6、编译和编译安装命令

make && make install

 需要大概5分钟左右,安装完成后,显示如下图所示:

成功后的输出

7、备份旧的Openssl

接下来需要对之前的openssl进行备份,防止出问题可以进行回滚。,回滚操作对下面的步骤进行反操作即可。

mv /usr/bin/openssl{,.bak}
mv /usr/include/openssl{,.bak}

8、链接新的Openssl

创建软链接后,才可以正常使用。如果不创建软连接,也可以直接复制到原来位置

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

9、检查Openssl的依赖是否正常

此时检查OpenSSL,看看依赖是否正常,可以看到缺失依赖,发现两个not found

ldd  /usr/bin/openssl
	linux-vdso.so.1 =>  (0x00007fff1c8eb000)
	libssl.so.3 => not found
	libcrypto.so.3 => not found
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f58ff9b1000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f58ff795000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f58ff3c7000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f58ffbb5000)

解决方法:在/etc/ld.so.conf这个文件末尾添加如下两行,并重新激活动态链接库 

vim /etc/ld.so.conf


/usr/local/openssl/lib/
/usr/local/openssl/lib64/

激活上面的路径

ldconfig -v

ldconfig -v 命令在 Linux 系统中用于更新系统的动态链接器(dynamic linker)缓存。这个命令会扫描 /etc/ld.so.conf 文件(以及 /etc/ld.so.conf.d/ 目录下的所有配置文件),找出所有的库文件(.so 文件)的路径,并更新 /etc/ld.so.cache 文件,这个文件是动态链接器在运行时查找库文件时所使用的缓存。

-v 选项代表“verbose”(详细模式),它会在执行过程中显示更多的信息,包括它正在扫描哪些目录、正在处理哪些库文件,以及最终更新到缓存中的信息。以下是执行成功后的结果: 

再次检查openssl这个可执行文件是否缺失依赖:可以看到前面缺失的库已经装载到内存了,OpenSSL可以使用了

[root@lzescfile openssl-3.0.14]# ldd  /usr/bin/openssl
	linux-vdso.so.1 =>  (0x00007fff0c16d000)
	libssl.so.3 => /usr/local/openssl/lib64/libssl.so.3 (0x00007f1bd4fb9000)
	libcrypto.so.3 => /usr/local/openssl/lib64/libcrypto.so.3 (0x00007f1bd4943000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f1bd473f000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1bd4523000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f1bd4155000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f1bd525e000)

10、检查Openssl版本,确认升级是否正常

测试

查看版本信息

如果升级成功,这条命令将显示新安装的OpenSSL版本号

openssl version -a

检查SSL/TLS协议支持

openssl ciphers -v 'ALL:!aNULL:!eNULL'

这个命令会列出所有可用的加密套件和它们所支持的协议版本。

测试加密

echo "test message" | openssl enc -aes-256-cbc -a -salt -iter 10000 -pass pass:testpassword

测试解密

[root@centos10 openssl-3.3.0]# echo "U2FsdGVkX18U9LnaQo3XPMlj8gr/GKe7/W6DrWKLUtk=" | openssl enc -d -aes-256-cbc -a -salt -iter 10000 -pass pass:testpassword
test message

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值