Está en la página 1de 5

CÓMO CONFIGURAR HTTPS EN APACHE WEB SERVER

CON CENTOS

Los servidores web utilizan HTTP por defecto, que es un protocolo de texto claro.
Como su nombre indica, un protocolo de texto no cifrado que no aplica ningún tipo
de encriptación de los datos. Mientras el servidor web basado en HTTP es muy fácil
de configurar, tiene una desventaja importante en términos de seguridad.
Exponerse a cualquier ataque "man-in-the-middle" capaz de ver el contenido de los
paquetes en tránsito con analizadores de paquetes cuidadosamente colocados. En
caso de una vulnerabilidad, un usuario malintencionado puede incluso configurar un
servidor "impostor" en la ruta de tránsito, que a continuación, se hace pasar por el
servidor web de destino. En este caso, los usuarios finales pueden comunicarse
realmente con el servidor impostor en lugar del servidor de destino real. De esta
manera, el usuario malintencionado puede engañar a los usuarios finales para que
entreguen información confidencial, como nombre de usuario y las contraseñas a
través de falsos formularios cuidadosamente elaborados.

Para hacer frente a este tipo de vulnerabilidades, la mayoría de los proveedores a


menudo prefieren HTTPS en sus servidores web. Para los sitios donde los usuarios
sólo leen el contenido y en realidad no introducen cualquier información, HTTP sigue
siendo una opción viable. Sin embargo, para los sitios que mantienen la información
y/o sitios donde se conectan usuarios donde obtienen servicios sensibles, HTTPS
es una necesidad. HTTPS permite que una página proporcionar los siguientes
servicios.
 Asegura que todos los paquetes de tránsito hacia y desde los servidores
están cifrados.
 Establece la confianza con un certificado digital oficial, de manera que los
servidores impostores no pueden pretender ser el servidor real.
La primera cosa necesaria para la creación de HTTPS es un certificado digital. Los
certificados digitales se pueden obtener de cualquiera de los métodos siguientes.
Los certificados autofirmados se recomiendan para fines de pruebas y proyectos
personales. Los certificados autofirmados son aplicables también para los
proveedores de servicios donde los usuarios del cliente son específicas y el círculo
de la confianza es limitada. Los certificados autofirmados no cuestan dinero.
Los certificados se pueden obtener de proveedores de certificados basados en la
comunidad, tales como StartSSL y CACert . Estos certificados no cuestan dinero
tampoco, se recomiendan para proyectos personales.

Para proyectos comerciales donde se accede a los sitios web a nivel mundial, se
recomienda comprar un certificado de una autoridad certificadora de confianza
conocido. Estos certificados cuestan dinero, pero aumentan la credibilidad del
proveedor de servicios web.
Preparación
En esta demostración, vamos a utilizar un certificado auto-firmado. Se supone que
el servidor web Apache ya está instalado en CentOS. Para generar un certificado
auto-firmado, se utiliza openssl. Si openssl no está instalado, se puede instalar para
tal uso.
# yum install mod_ssl openssl

Generar un certificado autofirmado


Los siguientes comandos se pueden utilizar para generar un certificado auto-
firmado.
En primer lugar, generar una clave privada con cifrado de 2048 bits.

# openssl genrsa -out ca.key 2048

Luego genere solicitud de firma de certificado (CSR).


# openssl req -new -key ca.key -out ca.csr
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) [XX]:es
State or Province Name (full name) []:Caceres
Locality Name (eg, city) [Default City]:Caceres
Organization Name (eg, company) [Default Company Ltd]:LinuxParty
Organizational Unit Name (eg, section) []:Prensa
Common Name (eg, your name or your server's hostname) []:LinuxParty
Email Address []:linux_party@yahoo.es

Please enter the following 'extra' attributes


to be sent with your certificate request
A challenge password []:passworddeprueba
An optional company name []:ExtreHost

Por último, generar un certificado auto-firmado de tipo X 509, que tiene una validez
de 365 keys.
# openssl x509 -req -days 365 -in ca.csr -signkey
ca.key -out ca.crt

Una vez creado el certificado, copia los archivos en los directorios necesarios.

# cp ca.crt /etc/pki/tls/certs/

# cp ca.key /etc/pki/tls/private/

# cp ca.csr /etc/pki/tls/private/

Configuración del servidor Web Apache


Ahora que el certificado está listo, es hora de verlo en funcionamiento. En primer
lugar, edite el archivo de configuración siguiente.
A continuación, reinicie el servicio httpd para que los cambios surtan efecto.
# service httpd restart

El servidor web ya está listo para usar HTTPS.


Ajuste de máquinas virtuales
El Servidor web Apache se puede configurar para alojar múltiples sitios web. Estos
sitios se declaran como hosts virtuales en el archivo de configuración httpd. Por
ejemplo, supongamos que nuestro servidor web Apache tendrá 1un sitio "virtual-
web.example.com", y todos los archivos del sitio se almacenan en el
directorio /var/www/html/virtual-web
Para el host virtual, la configuración típica para HTTP se vería así.
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin email@example.com
DocumentRoot /var/www/html/virtual-web
ServerName virtual-web.example.com
</VirtualHost>

Tenemos que crear una definición similar para HTTPS también.

# vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:443

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory /var/www/html/virtual-web>
AllowOverride All
</Directory>
ServerAdmin email@example.com
DocumentRoot /var/www/html/virtual-web
ServerName virtual-web.example.com
</VirtualHost>

Para cada host virtual, etiquetas similares deberían ser definidas. Después de
agregar los hosts virtuales, el servicio web se reinicie.
# service httpd restart

Ahora las máquinas virtuales están listos para usar HTTPS también. Opcional:
Forzar Apache Web Server a utilizar siempre HTTPS
Si, por alguna razón, usted decide utilizar siempre HTTPS en el servidor web,
usted tendrá que redirigir todas las solicitudes HTTP entrantes (puerto 80) hacia
el puerto HTTPS (puerto 443).
El Servidor web Apache puede ser fácilmente ajustado para hacer esto.
1. Forzar el Sitio principal solamente
Para forzar el sitio principal para usar siempre HTTPS, modificamos el fichero de
configuración httpd.

# vim /etc/httpd/conf/httpd.conf

ServerName www.example.com:80
Redirect permanent / https://www.example.com
# service httpd restart

2. Forzar Hosts virtuales


Si desea forzar HTTPS en algún host virtual, así, la definición de HTTP se puede
reescribir como sigue.

# vim /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
ServerName virtual-web.example.com
Redirect permanent / https://virtual-web.example.com/
</VirtualHost>

# Service httpd restart

En resumen, HTTPS siempre se recomienda para los sitios donde se conectan los
usuarios. Esto mejora la seguridad tanto en el servidor y los usuarios que lo
utilizan. Los certificados pueden ser obtenidos en diversos medios, como los auto-
firmado, impulsado por la comunidad o incluso las autoridades comerciales. El
administrador debe ser prudente al seleccionar el tipo de certificado que se
utilizará.

También podría gustarte