SOPORTE HTTPS EN APACHE El protocolo https nos permite establecer conexiones seguras con el servidor para la comunicación de datos sensibles como contraseñas, nº de cuenta, datos personales, etc. Muchas veces escuchamos la frase: asegúrate de que la conexión es segura cuando realizamos compras o validación de datos en webs con usuario y contraseña. Lo que nos aseguramos con este protocolo es que la información que circula entre cliente (nuestro navegador) y servidor web está encriptada y en el caso de que sea interceptada será muy difícil que descubran su contenido a menos que se conozca la clave privada para descodificar la información. Estos certificados de seguridad se conocen como SSL (Secure Sockets Layer / Capa de Conexión Segura). El protocolo de Transferencia de Hiper-Texto (HTTPS) es la versión segura de el http (Hyper Text Transfer Protocool) que todos conocemos y utilizamos habitualmente. La diferencia es que, con HTTP podemos desarrollar actividades ecommerce, ya que permite realizar transacciones de forma segura. En los navegadores comunes, cuando estamos empleando un protocolo https podemos ver el icono de un candado, que aparece en la barra principal de nuestro navegador. Además, en la barra de direcciones podremos ver que http:// será sustituido por https://. Creación de la clave y el certificado Todas las operaciones de configuración las tendremos que hacer con la cuenta del administrador (root), por lo que lo primero que haremos cuando nos conectemos al servidor por telnet con el programa putty, será ejecutar el comando su para convertirnos en administrador del sistema. Creamos dos directorios especiales para la clave y el certificado en el directorio de apache24 (/usr/local/etc/apache24). $ su Password: # cd / # mkdir /usr/local/etc/apache24/ssl.key # mkdir /usr/local/etc/apache24/ssl.crt Establecemos permisos sólo para el administrador sobre estas carpetas: # chmod 0700 /usr/local/etc/apache24/ssl.crt # chmod 0700 /usr/local/etc/apache24/ssl.key Nos desplazaremos a la carpeta principal del usuario root para continuar el proceso: # cd /root Generamos la clave RSA con el comando openssl: (server.key) # openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus...++++++...++++++ e is 65537 (0x10001) Enter pass phrase for server.key: incluir la contraseña que se utilizará para encriptar Verifying - Enter pass phrase for server.key: repetir la contraseña Generamos el archivo con la información de solicitud del certificado con nuestros datos o los datos de la organización: (server.csr) Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 1/5
Se nos solicitará la información referente a: país, provincia, ciudad, nombre de la organización, departamento o sección, nombre común (podemos indicar el nuestro), dirección de correo, nueva clave y nombre opcional de la compañía. root@srvweb_peam:~ # openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: repetir la contraseña You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: Abreviatura del país ES State or Province Name (full name) [Some-State]: Provincia Locality Name (eg, city) []: Ciudad Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nombre empresa u organización Organizational Unit Name (eg, section) []: Unidad organizativa o departamento Common Name (e.g. server FQDN or YOUR name) []: Nombre común (puede ser el vuestro) Email Address []: Correo electrónico Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: Contraseña An optional company name []: Nombre opcional de la compañía Generamos el certificado x509 con el archivo de clave y el archivo de solicitud creados en los apartados anteriores, dándole un periodo de validez de 730 días (2 años). Este comando nos generará el fichero.crt que contendrá el certificado. (server.crt) # openssl x509 -req -days 730 -in /root/server.csr -signkey /root/server.key -out /root/server.crt Signature ok subject=/c=es/st=valencia/l=valencia/o=peam/ou=formacion/cn=luis/emailaddress=peam@peam.es Getting Private key Enter pass phrase for /root/server.key: Contraseña Al finalizar el proceso si mostramos el contenido del directorio root observaremos que tenemos los 3 archivos generados durante todo el proceso clave (key), solicitud (src) y certificado (crt). # ls -l 924 Feb 18 16:44 server.crt 753 Feb 18 16:42 server.csr 963 Feb 18 16:39 server.key El siguiente paso consiste en copiar los archivos creados a las carpetas ssl de apache que creamos al principio de todo el proceso: # cp /root/server.key /usr/local/etc/apache24/ssl.key/server.key # cp /root/server.crt /usr/local/etc/apache24/ssl.crt/server.crt Establecemos permiso de lectura sólo para el administrador sobre estos archivos: # chmod 0400 /usr/local/etc/apache24/ssl.crt/server.crt # chmod 0400 /usr/local/etc/apache24/ssl.key/server.key Configurar los archivos de apache Fichero httpd-ssl.conf (configuración ssl) Editar el fichero httpd-ssl.conf de la carpeta /usr/local/etc/apache24/extra y configurar las líneas del servidor virtual (línea 121) <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/mnt/webapps/www" Carpeta que establecimos como raíz de documentos de apache Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 2/5
ServerName www.example.com:443 Nombre del servidor establecido en el fichero httpd.conf ServerAdmin webmaster@peam.es Email establecido para el administrador en el fichero httpd.conf ErrorLog "/var/log/httpd-error.log" TransferLog "/var/log/httpd-access.log" SSLCertificateFile "/usr/local/etc/apache24/ssl.crt/server.crt" SSLCertificateKeyFile "/usr/local/etc/apache24/ssl.key/server.key" Fichero httpd.conf (configuración apache) Editar el fichero de configuración de apache httpd.conf (/usr/local/etc/apache24) Habilitar los módulos (mod_ssl y mod_socache_shmcb) descomentado las líneas: LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so línea 89 aprox. LoadModule ssl_module libexec/apache24/mod_ssl.so línea 141 aprox. Incluir el fichero httpd-ssl.conf descomentando la línea: # Secure (SSL/TLS) connections Include etc/apache24/extra/httpd-ssl.conf línea 512 aprox. Realizar cambios en la sección Directory: <Directory /> línea 226 aprox. AllowOverride none #Require all denied Comentar order allow,deny Añadir allow from all Añadir </Directory> Engorro con el fichero de claves Cada vez que iniciemos el servicio de Apache, se nos solicitará la clave del fichero server.key. Performing sanity check on apache24 configuration: Syntax OK Starting apache24. Apache/2.4.12 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. Private key host.web.com:443:0 (/usr/local/etc/apache24/ssl.key/server.key) Enter pass phrase: Para evitar que nos solicite la clave cada vez que iniciemos el servicio, utilizaremos el comando openssl para crear un fichero de clave especial con autoclave. Pasos: Crearemos una copia del fichero server.key original Crearemos el nuevo fichero de claves basándonos en esta copia # cd /usr/local/etc/apache24/ssl.key # cp server.key server.key.orig # openssl rsa -in server.key.orig -out server.key Enter pass phrase for server.key.orig: Contraseña writing RSA key Por ultimo reiniciar el servidor apache: # apachectl restart Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 3/5
Comprobar que todo funciona Para comprobar que funciona el soporte ssl abriremos nuestro navegador e indicaremos la dirección ip del servidor utilizando el protocolo https. Si nos muestra la página de inicio que creamos en el capítulo anterior Instalar servidor Apache, significará que todo funciona de forma correcta y que los datos habrán sido enviados a nuestro navegador de forma cifrada. Cuando lo ejecutemos por primera vez, los navegadores nos advertirán de que el certificado no proviene de una entidad certificadora conocida o de confianza. Ante esta situación tendremos que indicar que añadan una excepción de seguridad para este certificado y que es de confianza. Según el navegador que utilicemos actuaremos de la siguiente manera: Internet Explorer: Google Chrome: Mozilla Firefox: Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 4/5
Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 5/5