Este tutorial describe cómo poner en marcha un servidor web con soporte HTTPS. El procedimiento lo he utilizado en un equipo con Scientific Linux, distribución derivada de Red Hat, por lo que en esta distribución y en otras derivadas como Fedora o CentOS debería ser el mismo. En Ubuntu, Debian y compañía será muy similar pero cambiarán algunas rutas y el sistema de paquetería.
El certificado utilizado es autogenerado y suponemos que tenemos ya instalado Apache.
Instalación de OpenSSL y mod_ssl
Lo primero que necesitamos es tener instalado el software necesario, para ello a través de yum hacemos lo siguiente:
yum install mod_ssl openssl
Generación del certificado
Primero generamos la clave privada, elegimos algoritmo RSA y 1024 bits:
openssl genrsa -out ca.key 1024
Ahora generamos el CSR (Certificate Signing Request), un fichero que crea una entidad para pedirle a una tercera que lo firme, verificando así que los datos de la primera entidad son correctos. De esta forma unas entidades van certificando a otras creando una cadena de certificación, donde la primera entidad de llama la raíz de certificación.
openssl req -new -key ca.key -out ca.csr
Finalmente, nos autofirmamos el certificado:
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Le hemos puesto un período de validez de un año, pero podéis cambiar a vuestro gusto este tiempo. OpenSSL os pedirá una serie de datos sobre el certificado y su entidad emisora (vosotros): correo electrónico, ciudad, país… a través de un interfaz en texto.
Cambio de rutas
El siguiente paso es mover los ficheros de la firma que acabamos de generar a la ruta correcta.
mv ca.crt /etc/pki/tls/certs mv ca.key /etc/pki/tls/private/ca.key mv ca.csr /etc/pki/tls/private/ca.csr
Configuración de Apache
Ya estamos listos para comenzar con la configuración de Apache. En las versiones más modernas de Apache, el fichero de configuración viene dividido en varios ficheros separados por temática para un acceso más rápido a la parte deseada. El fichero que vamos a editar es el siguiente: /etc/httpd/conf.d/ssl.conf.
Buscamos las siguientes líneas y le asignamos el valor correcto (no tienen por qué estar seguidas una de la otra):
SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key
Host virtual
Para terminar crearemos un host virtual donde indicaremos a Apache dónde buscar las peticiones dirigidas al puerto 443 (las peticiones HTTPS). Definimos un host virtual al final de /etc/httpd/conf/httpd.conf:
NameVirtualHost *:443
Y luego la definición de las características en sí:
<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key AllowOverride All DocumentRoot /var/www/httpsdocs ServerName nombresitio.com </VirtualHost>
Reiniciar el servicio
Para que los cambios tengan validez, deberemos reiniciar el servicio:
service httpd restart
Y ya tendremos listo el sitio seguro. Tened en cuenta que como la firma es autogenerada, los navegadores no la contemplarán como segura y aparecerá la típica pantalla de “Error SSL” o similar, que seguro que conocéis.
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Y sirve para varios dominios??? que yo recuerde la última vez que lo intenté hace años sólo se podía tener un dominio, la verdad es que hace muchísimo que no lo toco.
@kFk: Con VirtualHosts podrás definir tantos dominios como necesites. Haces una entrada para cada uno con sus propia configuración, en la que básicamente defines el nombre del mismo, qué certificado usa y la ruta dónde está alojado.
Estimados, me tengo todo tal cual como aparece en este tutorial, pero al reiniciar el servicio me aparece el mensaje que hay un error en el archivo ssl.conf. Indica que el archivo ca.crt no se encuenta en la ruta especificada o que se encuentra vacío, pero verifiqué y sí se encuentra en la ruta.
Alguien me podría decir que ocurre?
No he visto este error nunca :S, es raro, ¿has mirado en Google? ¿Alguien puede echarnos una mano?
¿La ruta estás seguro que es correcta? La idea sería hacer la ruta absoluta para salir de dudas.
Quel Siwa tango vav tolion ela vas lo boracay.
Nonbre: Sandra
Los archivos en centos no se deben mover, se deben de copiar, por seguridad, prueben con este comando:
restorecon -RvF /etc/pki