CentOS7 升级openssl版本(升级至3.0.3)

Posted likehoooood

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7 升级openssl版本(升级至3.0.3)相关的知识,希望对你有一定的参考价值。

首先查看本地openssl版本

openssl version

创建一个放源码的目录(按自己习惯)

#这里是我的习惯
cd /usr/local/src   
#去官网获取你想要版本的tar压缩包  如果没有wget命令,自行百度
wget --no-check-certificate https://www.openssl.org/source/old/3.0/openssl-3.0.3.tar.gz//获取openssl
#解压文件到当前目录
tar -zxvf openssl-3.0.3.tar.gz
#进入源码目录
cd openssl-3.0.3
#安装openssl 可以指定安装目录,但是我这里没有指定 ,默认在/usr/local下 
./config
#如果指定安装目录则使用下面的命令
./config --prefix=/usr/aaa/openssl
..漫长的等待时间..
#make就是编译过程,make必须在源码所在的目录(也就是openssl-3.0.3目录下)
make
#make不报错的话直接安装   也可以先test一下:make test  我不知道区别是啥,自行百度吧   这里我没有test
make install
#make 和make install需要等一会
#因为我们是版本升级,所以要进行版本切换
mv /usr/bin/openssl /usr/bin/oldopenssl #将原有的openssl 备份
#这里是给文件创建软链接 下面会解释ln -s A B的含义,这里不赘述
ln -s /usr/local/bin/openssl /usr/bin/openssl
#如果是同版本更新,就不用执行下面这两行
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/
#将源码编译后会生成对应的代码库 也就是上面的libcrypto.so.3 所以我们要告诉linux去哪里加载这些代码库 
#这里涉及到 静态编译和动态编译 博主并没有看这块 所以目前就是这个做的
#将这个路径添加到ld.so.conf这个文件中(文件最后面,以追加的形式)
#注意!!!下面写入什么路径 后面就执行对应的ln -s 对应路径下的
echo "/usr/local/lib64" >> /etc/ld.so.conf
#重载一下ld.so.conf文件
ldconfig
#测试openssl版本
openssl version 

ln -s /a/test.php /b/temp.php 前提是b目录下没有temp.php文件 该命令的意思类似Windows下创建/a/test.php的快捷方式为/b/temp.php 删除快捷方式对源文件没有影响. 但是!!!删除源文件会导致软链接(快捷方式)不断闪烁

若openssl version 报错:openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No su file or directory

/usr/local/lib执行下面的命令:

ln -s /usr/local/lib/libssl.so.3 /usr/lib/libssl.so.3
ln -s /usr/local/lib/libcrypto.so.3 /usr/lib/libcrypto.so.3

如果还是不行,把上面路径里的lib改为lib64

ln -s /usr/local/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3

Centos6.5升级openssh至7.4版本

 

,备份配置文件,以备升级失败进行回退

 

,下载安装包

wget http://www.zlib.net/zlib-1.2.11.tar.gz

wget https://openbsd.mirror.netelligent.ca/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz

wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz

 

,查看当前系统版本

 

 

 

 

四,开启telnet连接通道

yum安装telnet

yum -y install telnet-server*

关闭防火墙

/etc/init.d/iptables stop

编辑配置文件

 vim /etc/xinetd.d/telnet

disable值yes改为no

允许root用户通过telnet登录

mv /etc/securetty /etc/securetty.old

启动并设置开机启动

/etc/init.d/xinetd start

                         

chkconfig xinetd on

验证 telnet 127.0.0.1

 

,安装编译工具包

 yum  install gcc pam-devel zlib-devel -y

 

,安装zlib

解压

tar -xf zlib-1.2.11.tar.gz

进入目录

cd zlib-1.2.11

编译

./configure --prefix=/usr

make

卸载

rpm -e --nodeps zlib

make install

共享库文件注册到系统

echo \'/usr/lib\' >> /etc/ld.so.conf

ldconfig

 

,升级openssl

备份当前openssl

mv /usr/lib64/openssl/ /usr/lib64/openssl.old

 

mv /usr/bin/openssl /usr/bin/openssl.old

mv /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old

如下两个库文件必须先备份,因系统内部分工具(如yum、wget等)依赖此库,而新版OpenSSL不包含这两个库

cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old

cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old

卸载当前openssl

rpm -qa |grep openssl|xargs -i rpm -e --nodeps {}

安装openssl

tar -xf openssl-1.0.2m.tar.gz

cd openssl-1.0.2m

./config --prefix=/usr/local/ssl --openssldir=/etc/ssl --shared zlib

make

make test

make install

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

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

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

ldconfig -v

验证

openssl version

 

 

 

PS:必须加上--shared,否则编译时会因找不到新安装的openssl的类库而报错

 

恢复共享库

mv  /usr/lib64/libcrypto.so.10.old  /usr/lib64/libcrypto.so.10

mv  /usr/lib64/libssl.so.10.old  /usr/lib64/libssl.so.10

 

 

,升级openssh

备份当前openssh

mv /etc/ssh /etc/ssh.old

卸载

rpm -qa |grep openssh|xargs -i rpm -e --nodeps {}

openssh安装前环境配置

install  -v -m700 -d /var/lib/sshd

chown  -v root:sys /var/lib/sshd

groupadd -g 51 sshd

useradd  -c \'sshd PrivSep\' -d /var/lib/sshd -g sshd -s /bin/false -u 51 sshd

 

源码安装

tar -xf openssh-7.4p1.tar.gz

cd openssh-7.4p1

./configure --prefix=/usr  --sysconfdir=/etc/ssh  --with-md5-passwords  --with-pam  --with-zlib --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/lib/sshd

make && make install

安装后环境配置

install -v -m755    contrib/ssh-copy-id /usr/bi

install -v -m644    contrib/ssh-copy-id.1 /usr/share/man/man1

install -v -m755 -d /usr/share/doc/openssh-7.4p1

install -v -m644    INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.4p1

 

验证是否安装成功

 

 

 

启动openssh服务

echo \'X11Forwarding yes\' >> /etc/ssh/sshd_config

允许root直接登录

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

拷贝启动文件设置chkconfig

cp -p contrib/redhat/sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd

chkconfig  --add  sshd

chkconfig  sshd  on

 

重启sshd需要通过telnet才能登录启动sshd

/etc/init.d/sshd restart

 

如果需要还原原来的ssh配置(如不需要则不进行一下操作)

rm -rf /etc/ssh

mv /etc/ssh.old /etc/ssh

 恢复登录

mv  /etc/securetty.old /etc/securetty

验证 openssh已经升级为更加安全的高版本

 

 PS:如果xshell登录出现

设置以下即可解决

 

 

参考:https://www.cnblogs.com/share100/p/6862635.html

  http://www.cnblogs.com/ldybyz/p/6699779.html

以上是关于CentOS7 升级openssl版本(升级至3.0.3)的主要内容,如果未能解决你的问题,请参考以下文章

CentOS升级OpenSSL至OpenSSL 1.1.0f版本<其中有遇到libcrypto.so

openssh5.3升级至7手记

CentOS 升级 OpenSSL 至最新版教程

centos7升级OpenSSH(源码编译升级)

Centos 7.4 Openssl 版本升级步骤

在centos 7如何安装python3.10