目录
1.介绍
本次升级操作系统为CentOS 7.4
OpenSSL 1.0.1k 升级至 OpenSSL 3.0.1
OpenSSH 7.4p1 升级至 OpenSSH 8.8p1
2.准备
2.1 安装包下载
OpenSSL 3.0.1
https://www.openssl.org/source/openssl-3.0.1.tar.gz
OpenSSH 8.8p1,使用官网镜像
2.2 Telnet安装
yum install -y telnet telnet-server #安装
systemctl start telnet.socket #启动服务
ss -tnl|grep 23 #验证服务
使用另一台主机测试,连接成功(默认不能使用root用户登陆)
3. OpenSSL升级
3.1 安装依赖包
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib perl-IPC-Cmd perl-Digest-SHA
3.2 编译安装
tar -zxvf openssl-3.0.1.tar.gz
cd openssl-3.0.1
./config shared zlib enable-fips --prefix=/usr/local/ssl
make && make install
若编译时出现以下报错,参考这篇文章解决
编译OpenSSL时报错https://blog.csdn.net/sd4493091/article/details/122220902
Can't locate IPC/Cmd.pm in @INC (@INC contains: /root/Downloads/openssl-3.0.1/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /root/Downloads/openssl-3.0.1/external/perl/Text-Template-1.56/lib) at /root/Downloads/openssl-3.0.1/util/perl/OpenSSL/config.pm line 18.
BEGIN failed--compilation aborted at /root/Downloads/openssl-3.0.1/util/perl/OpenSSL/config.pm line 18.
Compilation failed in require at /root/Downloads/openssl-3.0.1/Configure line 23.
BEGIN failed--compilation aborted at /root/Downloads/openssl-3.0.1/Configure line 23.
3.3 备份原来的OpenSSL
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
3.4 创建软连接
因为源码安装默认安装的位置是 /usr/local/ssl 需要将创建软链接到系统位置:
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
执行上述命令前,建议先通过 find / -name openssl 查看一下bin和include对应的openssl安装包的位置,不出意外的话,应该与上面的命令一致。
3.5 修改lib库
echo '/usr/local/ssl/openssl/lib64' > /etc/ld.so.conf.d/openssl.conf
ldconfig
3.6 查看OpenSSL版本
[root@centos7 openssl-3.0.1]# openssl version -a
OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)
built on: Wed Dec 29 07:20:46 2021 UTC
platform: linux-x86_64
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl/ssl"
ENGINESDIR: "/usr/local/ssl/lib64/engines-3"
MODULESDIR: "/usr/local/ssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfdfa32035f8bffff:0x9c67ab
若提示以下错误
[root@centos7 openssl-3.0.1]# openssl version -a
openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
通过 find / -name libcrypto.so.3 和 libssl.so.3 查找到对应so文件的位置,并建立软连接
ln -s /usr/local/ssl/lib64/libssl.so.3 /usr/lib/libssl.so.3
ln -s /usr/local/ssl/lib64/libcrypto.so.3 /usr/lib/libcrypto.so.3
ldconfig
4. OpenSSH升级
4.1 备份原ssh配置文件
mv /etc/ssh /etc/ssh.bak
4.2 编译安装
注意:--with-ssl-dir参数指定为新升级的ssl路径
tar -zxf openssh-8.8p1.tar.gz
cd openssh-8.8p1/
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --mandir=/usr/share/man --with-zlib --with-pam --with-ssl-dir=/usr/local/ssl
make && make install
4.3 修改配置文件
根据原ssh配置文件,修改新生成的配置文件/etc/ssh/sshd_config
从源码包中拷贝一些文件到目标位置(如果目标目录存在就覆盖)
(可能下面的ssh.pam文件都没用到,因为sshd_config配置文件貌似没使用它,请自行测试。我这边是拷贝了)
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
4.4 重启服务并配置开机自启
把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
设置开机自启
chkconfig --add sshd
chkconfig sshd on
systemctl enable sshd
重启服务
使用以下命令管理sshd
/etc/init.d/sshd restart
/etc/init.d/sshd stop
/etc/init.d/sshd start
或通过systemctl
systemctl stop sshd
systemctl start sshd
systemctl restart sshd
4.5 服务验证
[root@GZWGQGLYJJC21 openssh-8.8p1]# ssh -V
OpenSSH_8.8p1, OpenSSL 3.0.1 14 Dec 2021
升级完毕!