Redhat7 ソース コード openssl を rpm にコンパイルしてアップグレードする

注: 安全のため、古いバージョンの 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

1.opensslをダウンロード

[root@localhost ~]# wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1s.tar.gz

2. 関連する依存関係をインストールする

[root@localhost ~]# yum -y install curl  which  make gcc perl  perl-WWW-Curl  rpm-build

注: centos/radhat6 バージョンの perl-WWW-Curl は手動でダウンロードする必要があります

[root@localhost ~]# wget http://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/Packages/perl-WWW-Curl-4.09-4.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh perl-WWW-Curl-4.09-4.el6.x86_64.rpm

3. コンパイルに必要なディレクトリを作成します

[root@localhost ~]# mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

4. openssl.spec ファイルを手動で書き込む

cat << 'EOF' > /root/rpmbuild/SPECS/openssl.spec
Summary: OpenSSL 1.1.1s for redhat
Name: openssl
Version: %{?version}%{!?version:1.1.1s}
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/local/newopenssl/openssl111i

%description
OpenSSL RPM for version 1.1.1s on redhat

%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.1s on redhat (development package)

%prep
%setup -q

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

%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

5. 対応するパッケージを準備し、rpm パッケージをコンパイルします。

[root@localhost ~]# cp openssl-1.1.1s.tar.gz /root/rpmbuild/SOURCES
cd /root/rpmbuild/SPECS && \
    rpmbuild \
    -D "version 1.1.1s" \
    -ba openssl.spec

6.opensslのrpmパッケージが生成されているか確認

[root@localhost SPECS]# cd /root/rpmbuild/RPMS/x86_64/
[root@localhost x86_64]# ls
openssl-1.1.1s-1.el6.x86_64.rpm  openssl-devel-1.1.1s-1.el6.x86_64.rpm

 7. openssl を 1.1.1s にアップグレードする

[root@localhost x86_64]# rpm -ivh openssl-1.1.1s-1.el6.x86_64.rpm --force --nodeps

知らせ:

openssl の上位バージョンへのアップグレード にはリスクがあります

  • 事前に元の openssl をアンインストールしないでください。例: rpm -e openssl-1.0.2k-21.el7_9.x86_64
  • openssl 1.1.1s を直接アップグレードすることはできません。例: rpm -Uvh openssl-1.1.1s-1.el6.x86_64.rpm 

ソフトリンクを直接削除することはできません.
開発のために新しいバージョンを使用する必要がある場合は、元のソフトリンクポイントを置き換える、つまり元の動的ライブラリを置き換えてバージョンをアップグレードする必要があります.
/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_50877409/article/details/130405790