因为业务模块代码调用 certificate_parse 接口函数报错,定位后说程序链接的openssl版本 1.0.2k过低导致。实际上服务器已安装过3.0.1版本,openssl version 查看结果也是3.0.1 ,但是/usr/lib64 下libssl 和libcrypto 的版本还是1.0.2k。冲动之下删了 1.0.2k相关的so文件,导致yum、scp、meson等命令都用不了,sshd服务启动不了,而且报错都是以下信息:
ImportError: /lib64/libcrypto.so.10: version `libcrypto.so.10' not found (required by /usr/lib64/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so)
折腾半天,才把服务器恢复。记录一下过程:
1、因为安装过3.0.1 版本,直接在 /usr/lib64/ 下添加 libssl.so.10 和 libcrypto.so.10 的软链接,无用;
2、删了3.0.1版本,换装1.1.1 版本,加好软链接,还是无用,重启了服务器,sshd服务起不来,只能到机房去操作;
3、重新加软链接还是不行,想还原到1.0.2k版本,yum命令用不了,拷贝安装包到u盘,然后挂载上服务器,拷贝到服务器上手动安装。安装前先删了1.1.1 版本。安装完成后重新做 libssl.so.10 和 libcrypto.so.10 的软链接。sshd服务器能启动了,上面的命令都能用了。
4、1.0.2k 下载链接(/source/old/index.html)安装步骤:
./config --prefix=/usrmake ; make install//以上编译安装后只有.a文件,我们需要so文件//再来一遍./config -d shared --prefix=/usrmake cleanmake ; make install
总结:1、系统是centos7.8,yum默认安装1.0.2k版本,要安装更高版本,需下载安装包手动安装。安装完后虽然 openssl version 版本是自己安装的版本,但是 /usr/lib64 下 libssl.so.10 和 libcrypto.so.10 链接的还是 1.0.2k版本。
2、/usr/lib64/下,libcrypto.so.10 文件被很多命令依赖,不能随便删除和更换。
3、还原到1.0.2k版本后,业务模块调用certificate_parse不再出错,说明一开始问题的原因还是3.0.1 版本有问题。
4、