ilustrar
No se recomienda compilar e instalar usando paquetes rpm porque habrá problemas con los archivos de biblioteca correspondientes.
Clasificación | versión del sistema | versión opensh | versión openssl | Resultados de la prueba |
---|---|---|---|---|
Compilación de openssl de versión baja | centos6 | 8.7p1 | 1.0.1e | normal |
centos7 | 8.7p1 | 1.0.2k | normal | |
centos8 corriente de centos |
8.7p1 | 1.1.1g | normal | |
Compilación de openssl de versión alta | centos6 | 8.7p1 | 1.1.1l | normal |
centos7 | 1.0.2k | 1.1.1l 1.1.1t |
normal | |
centos8 corriente de centos |
Hay un error pero la compilación no se realizó correctamente. |
1. Descargue el paquete openssl
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
2. Haga una copia de seguridad de los archivos openssl antiguos
Itere y reemplace directamente los archivos originales; se recomienda hacer una copia de seguridad de los siguientes archivos si es necesario
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. Cree el paquete rpm de openssl
Descargar paquetes necesarios
yum -y install curl which make gcc perl perl-WWW-Curl rpm-build
Crea el directorio apropiado
mkdir -p /root/rpmbuild/{
BUILD,RPMS,SOURCES,SPECS,SRPMS}
Crear archivo de especificaciones
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
Prepare el paquete correspondiente y compile el paquete rpm.
cp openssl-1.1.1t.tar.gz /root/rpmbuild/SOURCES
cd /root/rpmbuild/SPECS && \
rpmbuild \
-D "version 1.1.1t" \
-ba openssl.spec
Nota: ¡
Existen riesgos al actualizar a una versión superior de openssl !
Nota 1: Recuerde actualizar esta versión. La versión openssl 1.1.1t es una actualización iterativa forzada.
- No puede desinstalar el openssl original por adelantado. Por ejemplo: rpm -e openssl-1.0.2k-21.el7_9.x86_64
- Openssl 1.1.1t no se puede actualizar directamente, por ejemplo: rpm -Uvh openssl-1.1.1t-1.el7.x86_64.rpm
actualización de 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
Nota:
Los enlaces suaves no se pueden eliminar directamente.
Si necesita utilizar una nueva versión para el desarrollo, debe reemplazar el puntero del enlace suave original, es decir, reemplazar la biblioteca dinámica original y actualizar la versión.
Reemplace las bibliotecas dinámicas correspondientes que existen en /lib(lib64) y /usr/lib(lib64) y /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