CentOS6.10系統(tǒng)原生的openssl版本太老,1.0.1e,不能滿足一些新版本應(yīng)用軟件的要求,但是它又被wget、mysql-libs、python-2.6.6、yum等一眾系統(tǒng)包所依賴,不能再做升級(jí)。故需考慮在不影響系統(tǒng)原生openssl的情況下,安裝較新版的openssl形成多版本并存,本文采用編譯rpm包的方式完成了可并存的openssl-1.1.1的安裝文件制作。
一、準(zhǔn)備編譯環(huán)境:
?1、發(fā)布一臺(tái)虛擬機(jī),最小化安裝CentOS6.10,查看系統(tǒng)信息如下:
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.10 (Final)
?2、查看系統(tǒng)所帶openssl的版本信息:
[root@localhost ~]# rpm -qa|grep openssh
openssh-5.3p1-123.el6_9.x86_64
openssh-server-5.3p1-123.el6_9.x86_64
[root@localhost ~]# rpm -qa|grep openssl
openssl-1.0.1e-57.el6.x86_64
?3、修改系統(tǒng)源為阿里源:
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm CentOS-* -rf
[root@localhost yum.repos.d]# vi http.repo
[root@localhost yum.repos.d]# cat http.repo
[os]
name=os
baseurl=https://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/
gpgcheck=0
enabled=1
[root@localhost yum.repos.d]# cd ~
[root@localhost ~]# yum repolist
已加載插件:fastestmirror
Determining fastest mirrors
os | 3.7 kB 00:00
os/primary_db | 4.7 MB 00:04
倉(cāng)庫(kù)標(biāo)識(shí) 倉(cāng)庫(kù)名稱 狀態(tài)
os os 6,713
repolist: 6,713
?4、準(zhǔn)備相關(guān)目錄及工具
[root@localhost ~]# cd ~
[root@localhost ~]# mkdir -p rpmbuild/{SOURCES,SPECS}
[root@localhost ~]# yum install wget tree -y
已加載插件:fastestmirror
設(shè)置安裝進(jìn)程
Loading mirror speeds from cached hostfile
解決依賴關(guān)系
--> 執(zhí)行事務(wù)檢查
---> Package tree.x86_64 0:1.5.3-3.el6 will be 安裝
---> Package wget.x86_64 0:1.12-10.el6 will be 安裝
--> 完成依賴關(guān)系計(jì)算
依賴關(guān)系解決
=========================================================================================================================================================
軟件包 架構(gòu) 版本 倉(cāng)庫(kù) 大小
=========================================================================================================================================================
正在安裝:
tree x86_64 1.5.3-3.el6 os 36 k
wget x86_64 1.12-10.el6 os 484 k
事務(wù)概要
=========================================================================================================================================================
Install 2 Package(s)
總下載量:520 k
Installed size: 1.9 M
下載軟件包:
(1/2): tree-1.5.3-3.el6.x86_64.rpm | 36 kB 00:00
(2/2): wget-1.12-10.el6.x86_64.rpm | 484 kB 00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------
總計(jì) 799 kB/s | 520 kB 00:00
運(yùn)行 rpm_check_debug
執(zhí)行事務(wù)測(cè)試
事務(wù)測(cè)試成功
執(zhí)行事務(wù)
正在安裝 : tree-1.5.3-3.el6.x86_64 1/2
正在安裝 : wget-1.12-10.el6.x86_64 2/2
Verifying : wget-1.12-10.el6.x86_64 1/2
Verifying : tree-1.5.3-3.el6.x86_64 2/2
已安裝:
tree.x86_64 0:1.5.3-3.el6 wget.x86_64 0:1.12-10.el6
完畢!
5、?準(zhǔn)備源文件
[root@localhost ~] # cd rpmbuild/SOURCES/
[root@localhost SOURCES]# wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz --no-check-certificate
--2023-09-06 17:08:04-- ?https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz
正在解析主機(jī) www.openssl.org... 184.30.9.21, 2402:4f00:4002:19e::c1e, 2402:4f00:4002:198::c1e
正在連接 www.openssl.org|184.30.9.21|:443... 已連接。
...
2023-09-06 17:08:13 (924 KB/s) - 已保存 “openssl-1.1.1.tar.gz” [8337920/8337920])
[root@localhost SOURCES]# ll openssl-1.1.1.tar.gz
-rw-r--r--. 1 root root 8337920 9月 11 2018 openssl-1.1.1.tar.gz
6、?安裝編譯工具
[root@localhost SPECS]# yum install -y gcc make perl rpm-build rpmlint perl-WWW-Curl
已加載插件:fastestmirror
設(shè)置安裝進(jìn)程
Loading mirror speeds from cached hostfile
os | 3.7 kB 00:00
包 gcc-4.4.7-23.el6.x86_64 已安裝并且是最新版本
包 1:make-3.81-23.el6.x86_64 已安裝并且是最新版本
包 4:perl-5.10.1-144.el6.x86_64 已安裝并且是最新版本
包 rpm-build-4.8.0-59.el6.x86_64 已安裝并且是最新版本
解決依賴關(guān)系
--> 執(zhí)行事務(wù)檢查
---> Package perl-WWW-Curl.x86_64 0:4.09-4.el6 will be 安裝
---> Package rpmlint.noarch 0:0.94-3.1.el6 will be 安裝
--> 處理依賴關(guān)系 python-magic,它被軟件包 rpmlint-0.94-3.1.el6.noarch 需要
--> 處理依賴關(guān)系 python-enchant,它被軟件包 rpmlint-0.94-3.1.el6.noarch 需要
--> 執(zhí)行事務(wù)檢查
---> Package python-enchant.x86_64 0:1.3.1-5.2.el6 will be 安裝
--> 處理依賴關(guān)系 libenchant.so.1()(64bit),它被軟件包 python-enchant-1.3.1-5.2.el6.x86_64 需要
---> Package python-magic.x86_64 0:5.04-30.el6 will be 安裝
--> 執(zhí)行事務(wù)檢查
---> Package enchant.x86_64 1:1.5.0-5.el6 will be 安裝
--> 處理依賴關(guān)系 libhunspell-1.2.so.0()(64bit),它被軟件包 1:enchant-1.5.0-5.el6.x86_64 需要
--> 執(zhí)行事務(wù)檢查
---> Package hunspell.x86_64 0:1.2.8-16.el6 will be 安裝
--> 完成依賴關(guān)系計(jì)算
依賴關(guān)系解決
=========================================================================================================================================================
軟件包 架構(gòu) 版本 倉(cāng)庫(kù) 大小
=========================================================================================================================================================
正在安裝:
perl-WWW-Curl x86_64 4.09-4.el6 os 47 k
rpmlint noarch 0.94-3.1.el6 os 186 k
為依賴而安裝:
enchant x86_64 1:1.5.0-5.el6 os 49 k
hunspell x86_64 1.2.8-16.el6 os 177 k
python-enchant x86_64 1.3.1-5.2.el6 os 82 k
python-magic x86_64 5.04-30.el6 os 29 k
事務(wù)概要
=========================================================================================================================================================
Install 6 Package(s)
總下載量:569 k
Installed size: 1.7 M
下載軟件包:
(1/6): enchant-1.5.0-5.el6.x86_64.rpm | 49 kB 00:00
(2/6): hunspell-1.2.8-16.el6.x86_64.rpm | 177 kB 00:00
(3/6): perl-WWW-Curl-4.09-4.el6.x86_64.rpm | 47 kB 00:00
(4/6): python-enchant-1.3.1-5.2.el6.x86_64.rpm | 82 kB 00:00
(5/6): python-magic-5.04-30.el6.x86_64.rpm | 29 kB 00:00
(6/6): rpmlint-0.94-3.1.el6.noarch.rpm | 186 kB 00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------
總計(jì) 303 kB/s | 569 kB 00:01
運(yùn)行 rpm_check_debug
執(zhí)行事務(wù)測(cè)試
事務(wù)測(cè)試成功
執(zhí)行事務(wù)
正在安裝 : python-magic-5.04-30.el6.x86_64 1/6
正在安裝 : hunspell-1.2.8-16.el6.x86_64 2/6
正在安裝 : 1:enchant-1.5.0-5.el6.x86_64 3/6
正在安裝 : python-enchant-1.3.1-5.2.el6.x86_64 4/6
正在安裝 : rpmlint-0.94-3.1.el6.noarch 5/6
正在安裝 : perl-WWW-Curl-4.09-4.el6.x86_64 6/6
Verifying : hunspell-1.2.8-16.el6.x86_64 1/6
Verifying : perl-WWW-Curl-4.09-4.el6.x86_64 2/6
Verifying : rpmlint-0.94-3.1.el6.noarch 3/6
Verifying : python-magic-5.04-30.el6.x86_64 4/6
Verifying : python-enchant-1.3.1-5.2.el6.x86_64 5/6
Verifying : 1:enchant-1.5.0-5.el6.x86_64 6/6
已安裝:
perl-WWW-Curl.x86_64 0:4.09-4.el6 rpmlint.noarch 0:0.94-3.1.el6
作為依賴被安裝:
enchant.x86_64 1:1.5.0-5.el6 hunspell.x86_64 0:1.2.8-16.el6 python-enchant.x86_64 0:1.3.1-5.2.el6 python-magic.x86_64 0:5.04-30.el6
完畢!
7、備份原始版本的rpm包,以備不時(shí)之需
[root@localhost ~]# cd /opt
[root@localhost opt]# mkdir openssl-devel-1.0.1e
[root@localhost opt]# cd openssl-devel-1.0.1e/
[root@localhost openssl-devel-1.0.1e]# wget https://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/Packages/openssl-1.0.1e-57.el6.x86_64.rpm
--2023-09-06 19:26:42-- https://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/Packages/openssl-1.0.1e-57.el6.x86_64.rpm
正在解析主機(jī) mirrors.aliyun.com... 120.226.194.113, 120.226.194.114, 120.226.194.119, ...
正在連接 mirrors.aliyun.com|120.226.194.113|:443... 已連接。
已發(fā)出 HTTP 請(qǐng)求,正在等待回應(yīng)... 200 OK
長(zhǎng)度:1600772 (1.5M) [application/x-rpm]
正在保存至: “openssl-1.0.1e-57.el6.x86_64.rpm”
100%[===============================================================================================================>] 1,600,772 1.58M/s in 1.0s
2023-09-06 19:26:44 (1.58 MB/s) - 已保存 “openssl-1.0.1e-57.el6.x86_64.rpm” [1600772/1600772])
[root@localhost openssl-devel-1.0.1e]# wget https://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/Packages/openssl-devel-1.0.1e-57.el6.x86_64.rpm
--2023-09-06 19:27:05-- https://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/Packages/openssl-devel-1.0.1e-57.el6.x86_64.rpm
正在解析主機(jī) mirrors.aliyun.com... 120.226.194.112, 120.226.194.116, 120.226.194.115, ...
正在連接 mirrors.aliyun.com|120.226.194.112|:443... 已連接。
已發(fā)出 HTTP 請(qǐng)求,正在等待回應(yīng)... 200 OK
長(zhǎng)度:1227684 (1.2M) [application/x-rpm]
正在保存至: “openssl-devel-1.0.1e-57.el6.x86_64.rpm”
100%[===============================================================================================================>] 1,227,684 2.40M/s in 0.5s
2023-09-06 19:27:06 (2.40 MB/s) - 已保存 “openssl-devel-1.0.1e-57.el6.x86_64.rpm” [1227684/1227684])
[root@localhost openssl-devel-1.0.1e]# ll
總用量 2764
-rw-r--r--. 1 root root 1600772 3月 23 2017 openssl-1.0.1e-57.el6.x86_64.rpm
-rw-r--r--. 1 root root 1227684 3月 23 2017 openssl-devel-1.0.1e-57.el6.x86_64.rpm
?二、正式編譯
1、編寫spec文件
[root@localhost SOURCES]# cd /root/rpmbuild/SPECS/
[root@localhost SPECS]# vi openssl-1.1.1.spec
[root@localhost SPECS]# cat openssl-1.1.1.spec
Summary: OpenSSL 1.1.1 Portable for Centos
Name: openssl
Version: %{?version}%{!?version:1.1.1}
Release: 25%{?dist}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
URL: https://www.openssl.org/
License: GPLv2+
Source: https://www.openssl.org/source/openssl-1.1.1.tar.gz
BuildRequires: make gcc perl perl-WWW-Curl
BuildRoot: %{_tmppath}/openssl-%{version}-%{release}-root
%global openssldir /usr/openssl-%{version}
%description
OpenSSL RPM for version 1.1.1 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 Portable RPM for version 1.1.1 on Centos (development package)
%prep
%setup -q
%build
./config --prefix=%{openssldir} --openssldir=%{openssldir} -fPIC
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-1.1.1 %{buildroot}%{_bindir}
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%files
%{openssldir}
%defattr(-,root,root)
/usr/bin/openssl-1.1.1
/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
%changelog
* Wed Sep 6 2023 daijianbing - 1.1.1
- Rebuilt for https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz
[root@localhost SPECS]#
?注:上面代碼有一處需添加一行,請(qǐng)見(jiàn)面的講解,可以避免后面rpm包安裝后的軟鏈接問(wèn)題。
2、開(kāi)始編譯
[root@localhost SPECS]# rpmbuild -bb openssl-1.1.1.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.JWwxii
+ umask 022
+ cd /root/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /root/rpmbuild/BUILD
+ rm -rf openssl-1.1.1
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/openssl-1.1.1.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd openssl-1.1.1
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.3NZp5J
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd openssl-1.1.1
+ LANG=C
+ export LANG
+ unset DISPLAY
+ ./config --prefix=/usr/openssl --openssldir=/usr/openssl -fPIC
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1 (0x1010100fL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile
**********************************************************************
*** ***
*** If you want to report a building issue, please include the ***
*** output from this command: ***
*** ***
*** perl configdata.pm --dump ***
*** ***
**********************************************************************
+ make
...
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/openssl-1.1.1-25.el6.x86_64
Wrote: /root/rpmbuild/RPMS/x86_64/openssl-1.1.1-25.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssl-devel-1.1.1-25.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssl-debuginfo-1.1.1-25.el6.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.xriOpv
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd openssl-1.1.1
+ '[' /root/rpmbuild/BUILDROOT/openssl-1.1.1-25.el6.x86_64 '!=' / ']'
+ /bin/rm -rf /root/rpmbuild/BUILDROOT/openssl-1.1.1-25.el6.x86_64
+ exit 0
3、如上最后出現(xiàn)“+ exit 0”即正常編譯完成,在/root/rpmbuild/RPMS/x86_64目錄下可以看到編譯生成的rpm文件
[root@localhost SPECS]# ll /root/rpmbuild/RPMS/x86_64/*-1.1.1-*
-rw-r--r--. 1 root root 5439452 9月 6 17:25 /root/rpmbuild/RPMS/x86_64/openssl-1.1.1-25.el6.x86_64.rpm
-rw-r--r--. 1 root root 133508 9月 6 17:25 /root/rpmbuild/RPMS/x86_64/openssl-debuginfo-1.1.1-25.el6.x86_64.rpm
-rw-r--r--. 1 root root 237604 9月 6 17:25 /root/rpmbuild/RPMS/x86_64/openssl-devel-1.1.1-25.el6.x86_64.rpm
三、測(cè)試安裝及驗(yàn)證
1、嘗試直接安裝新版
[root@localhost SPECS]# cd /root/rpmbuild/RPMS/x86_64/
[root@localhost x86_64]# ll
總用量 5684
-rw-r--r--. 1 root root 5440868 9月 6 20:39 openssl-1.1.1-25.el6.x86_64.rpm
-rw-r--r--. 1 root root 133428 9月 6 20:39 openssl-debuginfo-1.1.1-25.el6.x86_64.rpm
-rw-r--r--. 1 root root 237644 9月 6 20:39 openssl-devel-1.1.1-25.el6.x86_64.rpm
[root@localhost x86_64]# rpm -ivh *
Preparing... ########################################### [100%]
1:openssl ########################################### [ 33%]
2:openssl-devel ########################################### [ 67%]
3:openssl-debuginfo ########################################### [100%]
[root@localhost x86_64]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
?可見(jiàn)安裝新版以后,并沒(méi)有影響系統(tǒng)默認(rèn)安裝的openssl
2、查看新版openssl安裝的目錄文件
[root@localhost x86_64]# rpm -qpl openssl-1.1.1-25.el6.x86_64.rpm |more
/usr/bin/openssl-1.1.1
/usr/lib64/libcrypto.so.1.1
/usr/lib64/libssl.so.1.1
/usr/openssl-1.1.1
/usr/openssl-1.1.1/bin
/usr/openssl-1.1.1/bin/c_rehash
/usr/openssl-1.1.1/bin/openssl
/usr/openssl-1.1.1/certs
/usr/openssl-1.1.1/ct_log_list.cnf
/usr/openssl-1.1.1/ct_log_list.cnf.dist
/usr/openssl-1.1.1/include
/usr/openssl-1.1.1/include/openssl
/usr/openssl-1.1.1/include/openssl/aes.h
/usr/openssl-1.1.1/include/openssl/asn1.h
...
/usr/openssl-1.1.1/share/man/man7/passphrase-encoding.7
/usr/openssl-1.1.1/share/man/man7/scrypt.7
/usr/openssl-1.1.1/share/man/man7/ssl.7
/usr/openssl-1.1.1/share/man/man7/x509.7
3、執(zhí)行新版本查看信息,發(fā)現(xiàn)問(wèn)題
?可見(jiàn)是鏈接文件指向錯(cuò)誤,手工修正
[root@localhost x86_64]# rm /usr/bin/openssl-1.1.1
rm:是否刪除符號(hào)鏈接 "/usr/bin/openssl-1.1.1"?y
[root@localhost x86_64]# ll /usr/openssl-1.1.1/bin/openssl
-rwxr-xr-x. 1 root root 646152 9月 6 21:28 /usr/openssl-1.1.1/bin/openssl
[root@localhost x86_64]# /usr/openssl-1.1.1/bin/openssl version
OpenSSL 1.1.1 11 Sep 2018
[root@localhost x86_64]# cp /usr/openssl-1.1.1/bin/openssl /usr/openssl-1.1.1/bin/openssl-1.1.1
[root@localhost x86_64]# ln -sf /usr/openssl-1.1.1/bin/openssl-1.1.1 /usr/bin/openssl-1.1.1
[root@localhost x86_64]# openssl-1.1.1 version
OpenSSL 1.1.1 11 Sep 2018
[root@localhost x86_64]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 201
經(jīng)排查,出現(xiàn)軟鏈接錯(cuò)誤的原因是因?yàn)榫幾g生成的openssl命令文件不帶1.1.1,將spec文件中的以下行:
ln -sf %{openssldir}/bin/openssl-1.1.1 %{buildroot}%{_bindir}
之前添加一行,如下:
cp?%{openssldir}/bin/openssl?%{openssldir}/bin/openssl-1.1.1
ln -sf %{openssldir}/bin/openssl-1.1.1 %{buildroot}%{_bindir}?
?再次編譯即可。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-698994.html
至此,CentOS6.10系統(tǒng)的openssl 1.0.1e和1.1.1多版本運(yùn)行環(huán)境建立完成,運(yùn)行openssl即是系統(tǒng)原生老版,運(yùn)行openssl-1.1.1則是新安裝的1.1.1版本。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-698994.html
到了這里,關(guān)于全網(wǎng)獨(dú)家:編譯CentOS6.10系統(tǒng)的openssl-1.1.1多版本并存的rpm安裝包的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!