1-cenots7升级openssl
openssl版本选择
摘自:https://baijiahao.baidu.com/s?id=1776799474467241077&wfr=spider&for=pc
OpenSSL 是一个开源的软件套件,它可以为应用程序提供安全通信的功能,例如加密、解密、数字签名、证书管理等。OpenSSL 在互联网上广泛使用,例如 HTTPS、SSH、VPN、电子邮件等协议都依赖于 OpenSSL 来保护数据的机密性和完整性。
然而,OpenSSL 也不是完美的,它经常面临着各种安全漏洞的威胁,例如 2014 年曝光的“心脏出血”漏洞(Heartbleed)就导致了数百万用户的敏感信息泄露。为了修复这些漏洞,OpenSSL 团队不断地发布新版本和补丁,同时也不断地改进和优化 OpenSSL 的架构和功能。
目前,OpenSSL 的最新版本是 3.0,它于 2021 年 9 月 7 日正式发布。OpenSSL 3.0 是一个重大的更新,它引入了许多新的概念和特性,例如提供者(Provider)、FIPS 模块(FIPS Module)、低级 API 的弃用(Deprecation of Low Level APIs)等。这些变化旨在提高 OpenSSL 的可扩展性、灵活性、安全性和易用性。
与此同时,OpenSSL 1.1.1 版本已经达到了其生命周期(EOL)的尾声。根据 OpenSSL 官方的声明,OpenSSL 1.1.1 版本将在 2023 年 9 月 11 日停止支持,届时它将不再收到公开的安全修复程序。这意味着如果您继续使用 OpenSSL 1.1.1 版本,您的数据安全将面临巨大的风险。
因此,我们强烈建议您尽快升级到 OpenSSL 3.0 版本,以享受最新的安全保护和功能增强。升级到 OpenSSL 3.0 版本并不复杂,您只需要下载最新的源代码包,编译并安装即可。如果您遇到任何问题或困难,您可以参考 OpenSSL 官方提供的迁移指南,或者在社区论坛寻求帮助。
升级到 OpenSSL 3.0 版本有以下几个优势:
您可以使用 FIPS 模块来满足更高级别的安全标准。FIPS 模块是一个经过 FIPS 140-2 认证的加密算法集合,它可以让您的应用程序符合美国政府和其他机构的安全要求。OpenSSL 3.0 提供了一个内置的 FIPS 模块,您可以通过简单的配置文件或编程方式来启用它。
您可以使用提供者来扩展和定制 OpenSSL 的功能。提供者是一种新的机制,它可以让您选择或替换 OpenSSL 中可用的算法实现。OpenSSL 3.0 提供了五个标准的提供者,分别是 default、legacy、fips、base 和 null。您也可以编写自己的提供者或使用第三方提供者来增加新的算法或优化现有的算法。
您可以避免使用低级 API,从而提高代码的可移植性和可维护性。低级 API 是指那些针对特定算法实现的函数,例如 AES_set_encrypt_key、AES_encrypt 等。这些函数在 OpenSSL 3.0 中已经被弃用,因为它们可能会绕过提供者的选择和配置,从而导致意想不到的后果。您应该使用高级 API,例如 EVP API,来访问所有的算法实现。
OpenSSL 3.0 是一个值得升级的版本,它不仅可以为您提供最新的安全保护,还可以为您带来更多的功能和灵活性。如果您还在使用 OpenSSL 1.1.1 版本,您应该尽快行动起来,以免错过这个千载难逢的机会。
查看centos7默认的openssl版本
[root@cs ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
[root@cs ~]# whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/share/man/man1/openssl.1ssl.gz
默认的1.0.2版本着实有点低了,Python3.9以上版本都开始依赖openssl1.1.1版本了。所以,我们有必要升级下openssl到1.1.1。
注意,虽然openssl的最新版本已经到了3.x,但是亲测,centos7中安装Python解释器的话,最好的搭配是openssl1.1.1版本的。
编译安装openssl1.1.1
openssl官网:https://www.openssl.org/source/
依赖下载
yum update -y
yum install -y perl-IPC-Cmd
yum install -y openssl openssl-devel
yum install -y zlib zlib-devel openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
yum install -y wget
先备份
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
openssl1.1.1tar包下载、解压、编译安装
我从openssl官网:https://www.openssl.org/source/openssl-1.1.1w.tar.gz下载最新的1.1.1版本的tar包,此时叫做openssl-1.1.1w.tar.gz
。
cd /opt
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config -Wl,-rpath=/usr/lib64 --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/usr/lib64 && make -j 4 && make install
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
测试
openssl version
[root@cs openssl-1.1.1w]# openssl version
OpenSSL 1.1.1w 11 Sep 2023
编译安装openssl3.0
如果你是安装Python解释器报错过来的,这个就不要看了,亲测openssl3.x是可以成功的,但是Python解释器重新编译后,仍然报错,所以你应该去搜索如何安装openssl1.1.1版本
yum update -y
yum install -y perl-IPC-Cmd
yum install -y openssl openssl-devel
yum install -y zlib zlib-devel openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
yum install -y wget
1. 下载高版本的openssl版本
可以从这个链接下载:
cd /opt
wget https://www.openssl.org/source/openssl-3.0.12.tar.gz
2. 解压并编译安装
mv /usr/bin/openssl /usr/bin/openssl.bak
cd /opt
tar -zxvf openssl-3.0.12.tar.gz
cd openssl-3.0.12
./config --prefix=/usr/local/openssl shared zlib && make -j$(nproc) && make install -j$(nproc)
然后检查下动态链接库是否有问题:
cd /usr/local/openssl/bin
ldd openssl
[root@cs bin]# ldd openssl
linux-vdso.so.1 => (0x00007ffe567f3000)
libssl.so.3 => not found
libcrypto.so.3 => not found
libz.so.1 => /lib64/libz.so.1 (0x00007f8f7266f000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f8f7246b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8f7224f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8f71e81000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8f72885000)
发现两个not found,我们执行如下命令:
cd /usr/local/openssl/bin
cp -r /usr/local/openssl/lib64/* /usr/lib
/sbin/ldconfig
ldd openssl
# 再测就好了
[root@cs bin]# ldd openssl
linux-vdso.so.1 => (0x00007ffefb182000)
libssl.so.3 => /lib/libssl.so.3 (0x00007f37c1d58000)
libcrypto.so.3 => /lib/libcrypto.so.3 (0x00007f37c16e4000)
libz.so.1 => /lib64/libz.so.1 (0x00007f37c14ce000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f37c12ca000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f37c10ae000)
libc.so.6 => /lib64/libc.so.6 (0x00007f37c0ce0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f37c1ffd000)
添加软连接和环境变量:
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sv /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf.d/openssl.conf
echo "export OPENSSL_PATH=/usr/local/openssl/bin" >> /etc/profile
echo "export PATH=\$OPENSSL_PATH:\$PATH" >> /etc/profile
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/openssl/lib64" >> /etc/profile
source /etc/profile
openssl version
[root@cs bin]# openssl version
OpenSSL 3.0.12 24 Oct 2023 (Library: OpenSSL 3.0.12 24 Oct 2023)
基本上没问题了。