rocky 8 编译 openssl-3.1.3 rpm openssh-9.5 rpm

当前 openssl 版本为 OpenSSL 1.1.1k 版,因涉及Openssl 拒绝服务漏洞(CVE-2011-1473)因此需要升级 openssl 至 openssl3.1 版本;升级 openssh 至 OpenSSH_9.5p1 版本。

当前环境版本如图:

在这里插入图片描述

1、编译 OpenSSL 3.1.3 rpm 包

首先下载需要编译的安装包

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

安装相关工具

yum -y groupinstall 'Development Tools'

执行编译脚本(脚本内容如下)

#!/bin/bash

# Падаем сразу, если возникли какие-то ошибки
set -e
# Выводим, то , что делаем
set -v
mkdir ~/openssl && cd ~/openssl
yum -y install \
    curl \
    which \
    make \
    gcc \
    perl \
    perl-WWW-Curl \
    rpm-build \
    perl-IPC-Cmd

yum -y remove openssl

# Get openssl tarball
curl -O --silent https://www.openssl.org/source/openssl-3.1.3.tar.gz

# SPEC file
cat << 'EOF' > ~/openssl/openssl3.spec
Summary: OpenSSL 3.1.3 for Centos
Name: openssl
Version: %{?version}%{!?version:3.1.3}
Release: 1%{?dist}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
URL: https://www.openssl.org/
License: GPLv2+

Source: https://www.openssl.org/source/%{name}-%{version}.tar.gz

BuildRequires: make gcc perl perl-WWW-Curl
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%global openssldir /usr/openssl

%description
https://github.com/philyuchkoff/openssl-RPM-Builder
OpenSSL RPM for version 3.1.3 on CentOS

%package devel
Summary: Development files for programs which will use the openssl library
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}

%description devel
OpenSSL RPM for version 3.1.3 on CentOS (development package)

%prep
%setup -q

%build
./config --prefix=%{openssldir} --openssldir=%{openssldir}
make

%install
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%make_install

mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_libdir}
ln -sf %{openssldir}/lib64/libssl.so.3 %{buildroot}%{_libdir}
ln -sf %{openssldir}/lib64/libcrypto.so.3 %{buildroot}%{_libdir}
ln -sf %{openssldir}/bin/openssl %{buildroot}%{_bindir}

%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}

%files
%{openssldir}
%defattr(-,root,root)
/usr/bin/openssl
/usr/lib64/libcrypto.so.3
/usr/lib64/libssl.so.3

%files devel
%{openssldir}/include/*
%defattr(-,root,root)

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig
EOF


mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
cp ~/openssl/openssl3.spec /root/rpmbuild/SPECS/openssl.spec

mv openssl-3.1.3.tar.gz /root/rpmbuild/SOURCES
cd /root/rpmbuild/SPECS && \
    rpmbuild \
    -D "version 3.1.3" \
    --nodebuginfo \
    -ba openssl.spec

如图:脚本执行结束会在 /root/rpmbuild/RPMS 目录下生成 rpm 包

在这里插入图片描述

2、编译 OpenSSH Rpm 安装包

下载需要编译的版本包,这里以 openssh-9.5p1.tar.gz 版本为例

在这里插入图片描述

# 安装依赖包
yum install rpm-build zlib-devel openssl-devel \ 
gcc perl-devel pam-devel xmkmf libXt-devel gtk2-devel make -y

# 创建工作目录,拷贝源码包到目录
mkdir  -p  /root/rpmbuild/SOURCES
mkdir  -p  /root/rpmbuild/SPECS/
cp openssh-9.5p1.tar.gz x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES


# 解压源码包 拷贝openssh.spec进行修改
tar -xvf openssh-9.5p1.tar.gz 
cp openssh-9.5p1/contrib/redhat/openssh.spec  /root/rpmbuild/SPECS/

vi openssh.spec 
注释 #BuildRequires: openssl-devel < 1.1

# 制作 rpm 包
rpmbuild -ba openssh.spec

制作完成如图:

在这里插入图片描述

3、打包 ssh 、ssl 的 rpm 包

在这里插入图片描述
在这里插入图片描述

4、测试升级 openssh 、openssl

上传上文的 openssh-9.5p1-x86_64.tar.gz 、openssl-3.1.3.tar.gz 安装包

在这里插入图片描述
备份文件、检查当前 ssh ssl 版本

# 备份 ssh 配置文件
mkdir /etc/sshconfig_backup
cp /etc/ssh/sshd_config /etc/sshconfig_backup/
cp /etc/pam.d/sshd /etc/sshconfig_backup/pam.d_sshd

# 备份库文件
cp /usr/lib64/libcrypto.so.1.1.1k /root/
cp /usr/lib64/libssl.so.1.1.1k /root/

# 检查当前安装版本和已安装的rpm包
ssh -V
rpm -qa |grep  openssh
rpm -qa |grep  openssl

升级 openssh 、openssl 版本

# 解压 openssh openssl 压缩包 
tar -xvf openssh-9.5p1.tar.gz 
tar -xvf openssl-3.1.3.tar.gz 

# 卸载已安装的 openssl openssh
rpm -e openssh-clients-8.0p1-16.el8.x86_64 openssh-server-8.0p1-16.el8.x86_64 openssh-8.0p1-16.el8.x86_64 openssl-1.1.1k-7.el8_6.x86_64  --nodeps


# 安装 openssh openssl
rpm -ivh openssh-9.5p1-1.el8.x86_64.rpm openssh-clients-9.5p1-1.el8.x86_64.rpm openssh-server-9.5p1-1.el8.x86_64.rpm openssl-3.1.3-1.el8.x86_64.rpm  --nodeps --force


# 还原配置文件
cp /etc/sshconfig_backup/sshd_config /etc/ssh/sshd_config 
cp /etc/sshconfig_backup/pam.d_sshd /etc/pam.d/sshd

# 检查是否允许ROOT登陆
cat /etc/ssh/sshd_config | grep PermitRootLogin

cd /etc/ssh
chmod 600 ssh_host_ecdsa_key
chmod 600 ssh_host_rsa_key
chmod 600 ssh_host_ed25519_key

systemctl restart sshd

检查 openssh openssl 版本是否升级成功

在这里插入图片描述

5、编译过程报错整理

1、编译 ssh 报错:configure: error: PAM headers not found

yum -y install pam-devel

2、编译 ssh 报错:configure: error: *** working libcrypto not found, check config.log

缺少 libcrypto 包,解决办法,寻找 libcrypto 包,可在openssl下找lib,若是存在 libcrypto 包,则检查一下openssl库的路径填的对不对

# 修改 openssh.spec 或添加指定 openssl 位置
参数:
--with-ssl-dir=/usr/openssl/ 

在这里插入图片描述

6、最后

注意:本文测试升级过程是在测试环境里经过测试验证的,由于实际各种环境有所区别,因此请各位根据自己实际情况,测试好之后再上生产环境,若因自己操作不当,造成服务器失联请自行承担后果!

7、参考链接

本文编写过程中参考的相关官网及各位大佬文章的参考链接,感谢提供相关指导!

OpenSSL 官网
OpenSSL rpm builder for CentOS 7 - build latest OpenSSL binary
centos 7 制作openssh8.7/8.8/8.9/9.0/9.1/9.2/9.3 p1 rpm包升级——筑梦之路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值