Linux Openssl升级(详)
环境:
系统版本:CentOS Linux release 7.4.1708(Core)
内核版本:3.10.0-514.el7.x86 64
Openssl 由1.0.2k-fips 升级到3.1.0-beta1
升级说明:
OpenSSL缓冲区溢出漏洞(CVE-2021-3711),OpenSSL <= 1.1.1k
OpenSSL缓冲区溢出漏洞(CVE-2021-3712),OpenSSL <= 1.1.1k或OpenSSL <= 1.0.2y
Openssl源码地址
OPENSSL 源码包下载地址:https://ftp.openssl.org/source/
查看Openssl基本信息
版本 ssh -V 或openssl vervison
位置 whereis openssl
openssl vervison -a也可以看安装位置信息
部署准备
wget --no-check-certificate https://ftp.openssl.org/source/openssl-3.1.0-beta1.tar.gz //包下载
tar -zxvf openssl-3.1.0-beta1.tar.gz //解压ssl文件包
cd openssl-3.1.0-beta1
mv /usr/bin/openssl /usr/bin/openssl .bak
mv /usr/include/openssl /usr/include/openssl .bak //备份opensll文件
mkdir -p /usr/class="lazy" data-src/openssl //位置可以随意,创建目录 ,用于openssl安装路径
安装部署
./config --prefix=/usr/class="lazy" data-src/openssl --shared //进行源代码配置,生成了Makefile
可能出现报错,信息如下: 没有IPC/Cmd.pm
解决方法:
yum install perl-CPAN -y //注意CPAN为大写
perl -MCPAN -e shell
install IPC/Cmd.pm //输错了可以用Ctrl+Backspace删除
可能出现的问题1:perl -MCPAN -e shell 命令执行后报错,Can't call method "http" on unblessed reference at……可以通过cpan命令进入,如果输入还是有问题,退出来,再通过perl -MCPAN -e shell 进入。
可能出现的问题2:install IPC/Cmd.pm命令执行报错Catching error:“read timeout at……,可以退出后再执行一遍,在安装过程中一直卡在fetching with LWP的位置可以通过Ctrl+C取消提取,会自动进行安装。
装载完成后输入q退出来。
可能出现的问题3:
Failure! build file wasn't produced.
Please read INSTALL.md and associated NOTES-* files. You may also have to
look over your available compiler tool chain or change your configuration.
ERROR!
No C compiler found, please specify one with the environment variable CC,
解决方法:安装依赖包, yum install gcc gcc-++ glibc-devel glibc-headers -y
安装完成后再输入配置命令
make && make install //编译安装,执行make如果没有发生错误就执行make install
替换原openssl
ln -s /usr/class="lazy" data-src/openssl/bin/openssl /usr/bin/openssl //建立软连接
ln -s /usr/class="lazy" data-src/openssl/include/openssl /usr/include/openssl //建立软连接
扩展:
新建:ln [参数][源文件或目录][目标文件或目录]
删除:rm -rf [目标文件或目录]
检查软连接建立情况ls -al /usr/bin/openssl ,我们可以看到如下:
echo "/usr/class="lazy" data-src/openssl/lib" >> /etc/ld.so.conf //添加动态链接库
ldconfig //刷新库
ldconfig是一个动态链接库管理命令,命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。
检查版本信息。
可能出现显示错误1,没有libssl.so.3不能被打开共享库,找不到该库,动态链接库没有连接成功,可以手动刷
定位libssl.so.3与libcrypto.so.3文件位置,替换库
ln -s /usr/class="lazy" data-src/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/class="lazy" data-src/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
检查连接库
ldd /usr/class="lazy" data-src/openssl/bin/openssl
刷新库,查看库版本信息
总结:
OpenSSL升级主要关注安装部署的位置./config --prefix=/usr/class="lazy" data-src/openssl,基于此位置建立软连接。每次调整动态库后要输入ldconfig刷新库,每更新一次动态库,都会在ld.so.conf中生成相关信息,可以通过编辑/etc/ld.so.conf来调整库,保留匹配库。
参考材料:
https://blog.csdn.net/m0_50932526/article/details/128224055
https://www.jianshu.com/p/4e9edc2c678b
来源地址:https://blog.csdn.net/weixin_45447587/article/details/128852767
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341