制作openssl rpm并升级安装

说明

不建议采用rpm包的方式进行编译安装,因为相应的库文件会有问题

分类 系统版本 openssh版本 openssl版本 测试结果
低版本openssl编译 centos6 8.7p1 1.0.1e 正常
centos7 8.7p1 1.0.2k 正常
centos8
centos stream
8.7p1 1.1.1g 正常
高版本openssl编译 centos6 8.7p1 1.1.1l 正常
centos7 1.0.2k 1.1.1l
1.1.1t
正常
centos8
centos stream
有bug未编译成功

1.下载openssl包

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

2.备份旧版openssl文件

迭代直接替换原有文件 – 如有需要建议备份以下文件

mkdir ~/ssl_bak
cp /usr/bin/openssl ~/ssl_bak
cp /usr/lib64/libcrypto.so.1.0.2k ~/ssl_bak
cp /usr/lib64/libssl.so.1.0.2k ~/ssl_bak

3. 制作openssl的rpm包

下载必要软件包

yum -y install  curl  which  make gcc perl  perl-WWW-Curl  rpm-build

创建相应目录

mkdir -p /root/rpmbuild/{
    
    BUILD,RPMS,SOURCES,SPECS,SRPMS}

创建spec的文件

cat << 'EOF' > /root/rpmbuild/SPECS/openssl.spec
Summary: OpenSSL 1.1.1i for Centos
Name: openssl
Version: %{?version}%{!?version:1.1.1i}
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
OpenSSL RPM for version 1.1.1i 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 1.1.1i 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}/lib/libssl.so.1.1 %{buildroot}%{_libdir}
ln -sf %{openssldir}/lib/libcrypto.so.1.1 %{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.1.1
/usr/lib64/libssl.so.1.1

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

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig
EOF

准备相应包并编译rpm包

cp openssl-1.1.1t.tar.gz /root/rpmbuild/SOURCES
cd /root/rpmbuild/SPECS && \
    rpmbuild \
    -D "version 1.1.1t" \
    -ba openssl.spec

Note:
升级高版本openssl 切记有风险!

注1: 切记升级此版本openssl 1.1.1t版本 属于强制迭代升级

  • 不可以提前卸载原openssl 例如: rpm -e openssl-1.0.2k-21.el7_9.x86_64
  • 不可以直接升级openssl 1.1.1t 例如: rpm -Uvh openssl-1.1.1t-1.el7.x86_64.rpm

centos7升级openssl 1.1.1t

# 强制安装 忽略依赖
[root@localhost x86_64]# rpm -ivh openssl-1.1.1t-1.el7.centos.x86_64.rpm --nodeps --force
Preparing...                          ################################# [100%]
Updating / installing...
   1:openssl-1.1.1t-1.el7.centos      ################################# [100%]
 
[root@localhost openssh-8.7p1]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

注意:
不能直接删除软链接
如需使用新版本开发,则需替换原来的软链接指向,即替换原动态库,进行版本升级。
替换/lib(lib64)和/usr/lib(lib64)和/usr/local/lib(lib64)存在的相应动态库:

ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so
ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so

猜你喜欢

转载自blog.csdn.net/weixin_42602433/article/details/129800947