Si intenta seguir el artículo sobre cómo instalar Apache con SSL que discutimos hace un tiempo, se enfrentará a un problema durante la "creación" debido a la compatibilidad de la versión entre Apache 2.4.4 y las utilidades APR (Apache Portable Runtime Library) que viene con CentOS 6.
Hemos explicado en este artículo cómo resolver ese problema para que la última versión de Apache funcione en CentOS o RedHat.
Asegúrese de tener gcc y openssl-devel instalados.
# yum install gcc # yum install openssl-devel
También necesita APR de "Apache Portable Runtime Library" para instalar Apache desde la fuente.
Ya tendrá instalados los paquetes "apr" y "apr-util". Instale los paquetes apr-devel y apr-util-devel.
# yum install apr-devel # yum install apr-util-devel
Nota:En nuestro caso (debido a los problemas de compatibilidad de la versión), los descargaremos e instalaremos manualmente más tarde. Pero, por ahora, sigamos la corriente y veamos qué sucede cuando intentas hacerlo de esta manera.
Descargar Apache
Descargue Apache desde httpd.apache.org. La versión estable actual es 2.4.2.
Una vez que obtenga la URL directa para descargar la última versión estable de Apache, use wget como se muestra a continuación para descargarla directamente a su servidor.
cd /usr/src wget http://mirror.nyi.net/apache//httpd/httpd-2.4.2.tar.gz tar xvfz httpd-2.4.2.tar.gz
Instalar Apache con SSL/TLS
Vea todas las opciones de instalación y configuración de Apache disponibles como se muestra a continuación.
cd httpd-2.4.2 ./configure --help
Para instalar un módulo de Apache, normalmente diría –enable-{module-name}. Por ejemplo, para instalar SSL con Apache, es –enable-ssl. Para instalar el módulo ldap, es –enable-ldap.
Para desinstalar cualquier módulo predeterminado que viene con Apache, normalmente diría –disable-{module-name}. Por ejemplo, para deshabilitar la autenticación básica en Apache, es –disable-auth-basic
En este ejemplo, instalaremos Apache con todos los módulos predeterminados, con la adición de –enable-ssl (para instalar mod_ssl para compatibilidad con SSL) y –enable-so, que ayuda a cargar módulos en Apache durante el tiempo de ejecución a través de Dynamic Shared. Mecanismo de objeto (DSO), en lugar de requerir una recompilación.
./configure --enable-ssl --enable-so make make install
Nota:De forma predeterminada, lo anterior instala Apache en /usr/local/apache2. Si desea cambiar esta ubicación, use la opción –prefix en ./configure.
Reparación de mensajes de error de la utilidad APR
Es posible que no haya enfrentado este problema al instalar una versión anterior de Apache como discutimos hace un tiempo.
Cuando ejecuta "make", es posible que obtenga "rotatelogs.c:(.text+0x5ed):referencia indefinida a `apr_file_link' ” mensaje de error si está haciendo esto en CentOS 6.2 como se muestra a continuación.
# make rotatelogs.c:298: warning: implicit declaration of function âapr_file_linkâ /usr/lib64/apr-1/build/libtool --silent --mode=link gcc -std=gnu99 -pthread -o rotatelogs rotatelogs.lo /usr/lib64/libaprutil-1.la -ldb-4.7 -lexpat -ldb-4.7 /usr/lib64/libapr-1.la -lpthread rotatelogs.o: In function `post_rotate': rotatelogs.c:(.text+0x5ed): undefined reference to `apr_file_link' collect2: ld returned 1 exit status make[2]: *** [rotatelogs] Error 1 make[2]: Leaving directory `/usr/src/httpd-2.4.2/support' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/src/httpd-2.4.2/support' make: *** [all-recursive] Error 1
Esto se debe a que en CentOS 6, la última versión de APR disponible a través de la instalación de yum es 1.3.9, como se muestra a continuación.
# rpm -qa apr* apr-1.3.9-3.el6_1.2.x86_64 apr-util-1.3.9-3.el6_0.1.x86_64
Sin embargo, Apache 2.4.2 necesita la última versión de APR (que actualmente es 1.4.6).
Por lo tanto, vaya a la página de descarga de APR y descargue apr y apr-util.
cd /usr/src wget http://mirror.atlanticmetro.net/apache//apr/apr-1.4.6.tar.gz wget http://mirror.atlanticmetro.net/apache//apr/apr-util-1.4.1.tar.gz tar xvfz apr-1.4.6.tar.gz tar xvfz apr-util-1.4.1.tar.gz
Ahora, debe colocar esta nueva versión de los directorios apr y apr-util (sin el nombre de la versión en el directorio) en el directorio "srclib" ubicado en el directorio httpd-2.4.2 que se creó cuando descomprimió el software apache descargado.
En mi ejemplo, descargué httpd-2.4.2.tar.gz y lo descomprimí en /usr/src. Por lo tanto, necesito colocar el último apr y apr-util en este directorio.
mv apr-1.4.6 /usr/src/httpd-2.4.2/srclib/apr mv apr-util-1.4.1 /usr/src/httpd-2.4.2/srclib/apr-util
Una vez hecho esto, tenemos que configurarlo y hacerlo de nuevo. Si ejecuta ./configure –help, verá las siguientes opciones relacionadas con APR
# cd /usr/src/httpd-2.4.2 # ./configure --help --with-included-apr Use bundled copies of APR/APR-Util --with-apr=PATH prefix for installed APR or the full path to apr-config --with-apr-util=PATH prefix for installed APU or the full path to apu-config
Si decide instalar apr-1.4.6 y apr-util-1.4.1 en su sistema, debe usar "–with-apr" y "–with-apr-util" y proporcionar la ruta donde instaló estos utilidad.
En este ejemplo, no hicimos eso. es decir, no instalamos apr y apr-util que descargamos. En su lugar, los colocamos en httpd-2.4.2/srclib/apr-util. Entonces, deberíamos usar “–with-included-apr” en ./configure que usará estos apr y apr-util solo para la compilación e instalación de apache.
Entonces, volvamos a hacer ./configure (usando –with-included-apr), make y make install como se muestra a continuación.
./configure --enable-ssl --enable-so --with-included-apr make make install
Ahora, make ya no dará el mensaje de error "rotatelogs.c:(.text+0x5ed):referencia indefinida a `apr_file_link".
Habilitar SSL en httpd.conf
El archivo de configuración de Apache httpd.conf se encuentra en /usr/local/apache2/conf.
Descomente la línea de inclusión httpd-ssl.conf y la línea LoadModule ssl_module en el archivo /usr/local/apache2/conf/httpd.conf.
# vi /usr/local/apache2/conf/httpd.conf LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf
Vea httpd-ssl.conf para revisar todas las configuraciones SSL predeterminadas. En la mayoría de los casos, no necesita modificar nada en este archivo.
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
El certificado SSL y la clave son necesarios antes de iniciar Apache. El archivo server.crt y server.key mencionado en httpd-ssl.conf debe crearse antes de continuar.
# cd /usr/local/apache2/conf/extra # egrep 'server.crt|server.key' httpd-ssl.conf SSLCertificateFile "/usr/local/apache2/conf/server.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
Crear archivo server.crt y server.key
Primero, genere server.key usando openssl.
# cd /usr/src # openssl genrsa -des3 -out server.key 1024
El comando anterior le pedirá la contraseña. Asegúrese de recordar esta contraseña. Necesitas esto mientras inicias tu Apache más tarde.
A continuación, genere un archivo de solicitud de certificado (server.csr) utilizando el archivo server.key anterior.
# openssl req -new -key server.key -out server.csr
Finalmente, genere un certificado SSL autofirmado (server.crt) utilizando el archivo server.key y server.csr anterior.
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Una vez que haya terminado con los pasos anteriores, verá los siguientes tres archivos en /usr/src
# ls server* server.crt server.csr server.key
Copie el archivo server.key y server.crt en la ubicación adecuada del directorio de configuración de Apache.
cp server.key /usr/local/apache2/conf/ cp server.crt /usr/local/apache2/conf/
Iniciar Apache
Si recibe el siguiente mensaje de error, asegúrese de descomentar la línea que se muestra a continuación en httpd.conf
# /usr/local/apache2/bin/apachectl start AH00526: Syntax error on line 51 of /usr/local/apache2/conf/extra/httpd-ssl.conf: Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration # vi /usr/local/apache2/conf/httpd.conf LoadModule ssl_module modules/mod_ssl.so
Si recibe el siguiente mensaje de error, asegúrese de descomentar la línea que se muestra a continuación en httpd.conf
# /usr/local/apache2/bin/apachectl start AH00526: Syntax error on line 76 of /usr/local/apache2/conf/extra/httpd-ssl.conf: SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?). # vi /usr/local/apache2/conf/httpd.conf LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Finalmente, esto le pedirá que ingrese la contraseña de su clave privada antes de iniciar Apache.
# /usr/local/apache2/bin/apachectl start Apache/2.4.2 mod_ssl (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide the pass phrases. Server www.example.com:443 (RSA) Enter pass phrase: OK: Pass Phrase Dialog successful.
Verifique que el proceso httpd de Apache se esté ejecutando en segundo plano
# ps -ef | grep http root 29529 1 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start daemon 29530 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start daemon 29531 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start daemon 29532 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start root 29616 18260 0 13:09 pts/0 00:00:00 grep http
Para detener apache, use apachectl stop.
# /usr/local/apache2/bin/apachectl stop
Use httpd -l para ver todos los módulos que están compilados dentro del demonio Apache httpd.
# /usr/local/apache2/bin/httpd -l Compiled in modules: core.c mod_so.c http_core.c event.c
Por defecto, Apache SSL se ejecuta en el puerto 443. Abra un navegador web y verifique que puede acceder a su Apache usando https://{your-ip-address}