|
|
Atención: 21 al 25 de mayo, Curso Global de Servidores con CentOS 6.
Atención: 23 al 27 de abril, Curso SUSE Linux Enterprise Desktop Administration. Atención: 21 y 28 de abril, 5 y 12 de mayo, Taller de programación de Python. Atención: Disponible ALDOS 1.4.3. Nuestro sistema operativo para escritorio. Configuración de Apache con soporte SSL/TLS.
Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.Acerca de HTTPS.HTTPS es la versión segura del protocolo HTTP, inventada en 1996 por Netscape Communications Corporation. No es un protocolo separado de HTTP. Se trata de una combinación de este último con un mecanismo de transporte SSL o TLS, garantizando una protección razonable durante la comunicación cliente-servidor. Es ampliamente utilizado en la red mundial (WWW o World Wide Web) para comunicaciones como transacciones bancarias y pago de bienes y servicios. El servicio utiliza el puerto 443 por TCP para realizar las comunicaciones (la comunicación normal para HTTP utiliza el 80 por TCP). El esquema URI (Uniform Resource Identifier o Identificador Uniforme de Recursos) es, comparando sintaxis, idéntico al de HTTP (http:), utilizándose como «https:» seguido del subconjunto denominado URL (Uniform Resource Locator o Localizador Uniforme de Recursos). Ejemplo: https://www.dominio.tld/ URL: http://es.wikipedia.org/wiki/HTTPS y http://wp.netscape.com/eng/ssl3/draft302.txt Acerca de RSA.RSA, acrónimo de los apellidos de sus autores, Ron Rivest, Adi Shamir y Len Adleman, es un algoritmo para el ciframiento de claves públicas que fue publicado en 1977, patentado en EE.UU. en 1983 por el el Instituto Tecnológico de Michigan (MIT). RSA es utilizado ampliamente en todo el mundo para los protocolos destinados para el comercio electrónico. URL: http://es.wikipedia.org/wiki/RSA Acerca de Triple DES.Triple DES, o TDES, es un algoritmo que realiza un triple cifrado DES, desarrollado por IBM en 1978. Su origen tuvo como finalidad el agrandar la longitud de una clave sin necesidad de cambiar el algoritmo de ciframiento, lo cual lo hace más seguro que el algoritmo DES, obligando a un atacante el tener que triplicar el número de operaciones para poder hacer daño. A pesar de que actualmente está siendo reemplazado por el algoritmo AES (Advanced Encryption Standard, también conocido como Rijndael), sigue siendo estándar para las tarjetas de crédito y operaciones de comercio electrónico. URL: http://es.wikipedia.org/wiki/Triple_DES Acerca de X.509.X.509 es un estándar ITU-T (estandarización de Telecomunicaciones de la International Telecommunication Union ) para infraestructura de claves públicas (PKI, o Public Key Infrastructure). Entre otras cosas, establece los estándares para certificados de claves públicas y un algoritmo para validación de ruta de certificación. Este último se encarga de verificar que la ruta de un certificado sea válida bajo una infraestructura de clave pública determinada. Es decir, desde el certificado inicial, pasando por certificados intermedios, hasta el certificado de confianza emitido por una Autoridad Certificadora (CA, o Certification Authority). URL: http://es.wikipedia.org/wiki/X.509Acerca de OpenSSL.OpenSSL es una implementación libre, de código abierto, de los protocolos SSL (Secure Sockets Layer o Nivel de Zócalo Seguro) y TLS (Transport Layer Security, o Seguridad para Nivel de Transporte). Está basado sobre el extinto proyecto SSLeay, iniciado por Eric Young y Tim Hudson, hasta que éstos comenzaron a trabajar para la división de seguridad de EMC Corporation. Acerca de mod_ssl.Mod_ssl es un módulo para el servidor HTTP Apache, el cual provee soporte para SSL versiones 2 y 3 y TLS versión 1. Es una contribución de Ralf S. Engeschall, derivado del trabajo de Ben Laurie. URL: http://www.apache-ssl.org/ y http://httpd.apache.org/docs/2.2/mod/mod_ssl.html Requisitos.Es necesario disponer de una dirección IP pública para cada sitio de red virtual que se quiera configurar con soporte SSL/TLS. Debido a la naturaleza de los protocolos SSL y TLS, no es posible utilizar múltiples sitios de red virtuales con soporte SSL/TLS utilizando una misma dirección IP. Cada certificado utilizado requerirá una dirección IP independiente en el anfitrión virtual. El paquete mod_ssl instala el archivo /etc/httpd/conf.d/ssl.conf, mismo que no es necesario modificar, puesto que se utilizarán archivos de inclusión, con extensión *.conf, dentro del directorio /etc/httpd/conf.d/, a fin de respetar la configuración predeterminada y podre contar con la misma, que es funcional, brindando un punto de retorno en el caso de que algo saliera mal. Equipamiento lógico necesario.Instalación a través de yum.Si se utiliza de CentOS 5 o 6, o bien Red Hat Enterprise Linux 5 o 6, ejecute lo siguiente:
Procedimientos.Generando firma digital y certificado.Acceda al sistema como el usuario root. Acceda al directorio /etc/pki/tls/.
En caso de que existieran previamente, debe eliminar los archivos certs/dominio.tld.crt, certs/dominio.tld.crs, private/dominio.tld.key y private/dominio.tld.pem.
Se debe crear una clave con algoritmo RSA de 2048 octetos y estructura x509, la cual se cifra utilizado Triple DES (Data Encryption Standard), almacenado en formato PEM de modo que sea interpretable como texto ASCII. se solicitará una clave de acceso para asignar a la firma digital, por lo que se recomienda utilizar una muy buena clave de acceso, la cual, mientras más complicada y difícil sea, mejor.
Si se utiliza este archivo (dominio.tld.key) para la configuración del anfitrión virtual, se requerirá de interacción del administrador cada vez que se tenga que iniciar, o reiniciar, el servicio httpd, ingresando la clave de acceso de la firma digital. Este es el procedimiento más seguro, sin embargo, debido a que resultaría poco práctico tener que ingresar una clave de acceso cada vez que se inicie el servicio httpd, resulta más conveniente generar una firma digital RSA, la cual permita iniciar normalmente y sin interacción alguna, al servicio httpd.
El archivo dominio.tld.pem será el que se especifique más adelante como valor del parámetro SSLCertificateKeyFile en la configuración de Apache. A continuación, genere el archivo CSR (Certificate Signing Request), el cual es el archivo de solicitud que se hace llegar a una RA (Registration Authority o Autoridad de Registro), como Verisign, quienes, tras el correspondiente pago, envían de vuelta un certificado (para ser utilizado como el archivo dominio.tld.crt) firmado por dicha autoridad certificadora.
Lo anterior solicitará se ingresen varios datos:
La salida devuelta sería similar a la siguiente:
Si requiere un certificado auto-firmado, en lugar de un certificado firmado por un RA, puede generarse éste utilizando el archivo de petición CSR (dominio.tld.csr). En el ejemplo a continuación, se crea un certificado con estructura X.509 en el que se establece una validez por 730 días (dos años).
Con la finalidad de que sólo el usuario root pueda acceder a los archivos creados, se deben cambiar los permisos de éstos a sólo lectura para root.
Configuración simple de Apache para un solo dominio.Edite el archivo /etc/httpd/conf.d/ssl.conf:
Localice lo siguiente:
Cambie localhost.crt y localhost.key, por dominio.tld.crt y dominio.tld.pem:
A fin de que surtan efecto los cambios, es necesario reiniciar el servicio httpd.
Lo anterior deberá de proceder sin solicitar la clave de acceso de la firma digital (la que asignó cuando se creo dominio.tld.key). En caso contrario, significa que estableció dominio.tld.key como valor del parámetro SSLCertificateKeyFile en la configuración de Apache. Configuración de Apache para múltiples dominios.Omita el procedimiento anterior. Es importante resaltar que cada dominio deberá contar con su propia dirección IP, pues el protocolo HTTPS impedirá utilizar más de un certificado por dirección IP. El primer paso consiste en crear la estructura de directorios para el anfitrión virtual.
De todos directorios creados, sólo /var/www/dominio.tld/html, /var/www/dominio.tld/etc y /var/www/dominio.tld/cgi-bin pueden pertenecer a un usuario sin privilegios, quien administrará este anfitrión virtual. Crear el archivo /etc/httpd/conf.d/dominio.conf:
Adaptar la siguiente plantilla como contenido de este archivo, donde a.b.c.d corresponde a una dirección IP, y dominio.tld corresponde al nombre de dominio a configurar para el anfitrión virtual:
A fin de que surtan efecto los cambios, es necesario reiniciar el servicio httpd.
Lo anterior deberá de proceder sin solicitar la clave de acceso de la firma digital (la que asignó cuando se creo dominio.tld.key). En caso contrario, significa que estableció dominio.tld.key como valor del parámetro SSLCertificateKeyFile en la configuración de Apache. Comprobación.Sólo basta dirigir cualquier navegador HTTP hacia https://www.dominio.tld/ a fin de verificar que todo esté trabajando correctamente. Tras aceptar el certificado, en el caso de que éste no haya sido firmado por un RA, deberá poderse observar un signo en la barra de estado del navegador, el cual indica que se trata de una conexión segura. Modificaciones necesarias en el muro cortafuegos.Si se utiliza un cortafuegos, es necesario abrir, además del puerto 80 por TCP (HTTP), el puerto 443 por TCP (HTTPS). Si utiliza Shorewall, edite el archivo /etc/shorewall/rules:
Las reglas corresponderían a algo similar a lo siguiente:
Al terminar de configurar las reglas para Shorewall, reinicie el muro cortafuegos, ejecutando el siguiente mandato:
|
Comentarios Recientes