说明
不建议采用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