Hace unas semanas tuve que actualizar Apache en un servidor RHEL 5 . Apache funcionaba como proxy y SSL offloading de Tomcat . Por motivos de consolidación de instancias de Atlassian Confluence y Atlassian Jira se precisaba que Apache pudiera gestionar multiples certificados SSL .
En los repositorios de RHEL 5 la última versión disponible es la versión httpd-2.2.3-91.el5 , liberada en 2006-07-27. Dicha versión no cuenta con soporte para SNI (RFC-3546 Sección “3.1. Server Name Indication” ), ya que el soporte para SNI no se añadió hasta httpd-2.2.12 . Más información en SSL with Virtual Hosts Using SNI .
Al final decidí compilar desde las fuentes, es decir, un mal menor hasta que se migré el servicio de forma definitiva a una versión actual de RHEL .
A continuación el procedimiento que seguí para compilar e instalar la última versión de Apache en una RHEL 5 .
Descargar el código fuente… Para compilar Apache fue necesario cumplir las siguientes dependencias:
Apache Descargar las fuentes de la última versión de Apache (Downloading Apache )
1
wget http://apache.uvigo.es//httpd/httpd-2.4.23.tar.bz2 -O /opt/install/httpd-2.4.23.tar.bz2
APR (Apache Portable Runtime) Descargar el código de la última versión de APR (Downloading Apache Portable Runtime
1
2
wget http://apache.uvigo.es/apr/apr-1.5.2.tar.bz2 -O /opt/install/apr-1.5.2.tar.bz2
wget http://apache.uvigo.es/apr/apr-util-1.5.4.tar.bz2 -O /opt/install/apr-util-1.5.4.tar.bz2
Perl Compatible Regular Expressions (PCRE) Descargar el código de la última versión de PCRE (PCRE SourceForge )
1
wget https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.bz2/download -O /opt/install/pcre-8.39.tar.bz2
OpenSSL Descargar el código de la última versión de OpenSSL (OpenSSL Downloads )
1
wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz -O /opt/install/openssl-1.0.2j.tar.gz
Compilar Preparar las fuentes 1
2
3
4
5
6
7
tar -xjf /opt/install/httpd-2.4.23.tar.bz2 -C /opt/install/
tar -xjf /opt/install/apr-1.5.2.tar.bz2 -C /opt/install/httpd-2.4.23/srclib/
tar -xjf /opt/install/apr-util-1.5.4.tar.bz2 -C /opt/install/httpd-2.4.23/srclib/
mv /opt/install/httpd-2.4.23/srclib/apr-1.5.2/ /opt/install/httpd-2.4.23/srclib/apr
mv /opt/install/httpd-2.4.23/srclib/apr-util-1.5.4/ /opt/install/httpd-2.4.23/srclib/apr-util
tar -xzf /opt/install/openssl-1.0.2j.tar.gz -C /opt/install/
tar -xjf /opt/install/pcre-8.39.tar.bz2 -C /opt/install/
Compilar OpenSSL 1
2
3
4
5
6
7
8
mkdir /opt/openssl-1.0.2j
cd /opt/install/openssl-1.0.2j
./config \
--prefix=/opt/openssl-1.0.2j/ \
--openssldir=/opt/openssl-1.0.2j/
make depend
make
make install
Comprobar que está disponible la nueva versión de OpenSSL y que no se ha modificado la versión de OpenSSL del sistema:
1
2
3
4
5
6
7
8
[root@SRVMAD25 openssl-1.0.2j]# /opt/openssl-1.0.2j/bin/openssl
OpenSSL> version
OpenSSL 1.0.2j 26 Sep 2016
OpenSSL> exit
[root@SRVMAD25 openssl-1.0.2j]# openssl
OpenSSL> version
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
OpenSSL> exit
Compilar PCRE 1
2
3
4
5
6
7
mkdir /opt/pcre-8.39
cd /opt/install/pcre-8.39
./configure \
--prefix=/opt/pcre-8.39 \
--enable-unicode-properties
make
make install
Comprobar que está disponible la nueva versión de PCRE y que no se ha modificado la versión de PCRE del sistema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@SRVMAD25 pcre-8.39]# /opt/pcre-8.39/bin/pcretest -C
PCRE version 8.39 2016-06-14
Compiled with
8-bit support
UTF-8 support
Unicode properties support
No just-in-time compiler support
Newline sequence is LF
\R matches all Unicode newlines
Internal link size = 2
POSIX malloc threshold = 10
Parentheses nest limit = 250
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack
[root@SRVMAD25 pcre-8.39]# pcretest -C
PCRE version 6.6 06-Feb-2006
Compiled with
UTF-8 support
Unicode properties support
Newline character is LF
Internal link size = 2
POSIX malloc threshold = 10
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack
Compilar Apache 1
2
3
4
5
6
7
8
9
10
11
12
13
14
mkdir /opt/httpd-2.4.23
cd /opt/install/httpd-2.4.23
./configure \
--enable-ssl \
--enable-so \
--with-included-apr \
--with-mpm=worker \
--with-pcre=/opt/pcre-8.39/ \
--prefix=/opt/httpd-2.4.23 \
--with-ssl=/opt/openssl-1.0.2j/ \
--enable-ssl-staticlib-deps \
--enable-mods-static=ssl
make
make install
Comprobar que está disponible la nueva versión de Apache :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@SRVMAD25 httpd-2.4.23]# /opt/httpd-2.4.23/bin/httpd -V
Server version: Apache/2.4.23 (Unix)
Server built: Nov 8 2016 12:18:35
Server's Module Magic Number: 20120211:61
Server loaded: APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/opt/httpd-2.4.23"
-D SUEXEC_BIN="/opt/httpd-2.4.23/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Configuración final Por último solo es necesario copiar los archivos de configuración desde /etc/httpd/conf.d/
a /opt/httpd-2.4.23/conf.d/
.
Entradas de interés