HTTPS en Openstack
Introducción
El siguiente paso en nuestro escenario opensatack sera configurar de forma adecuada el protocolo HTTPS en nuestro servidor web para nuestra aplicaciones web. Para ello vamos a emitir un certificado wildcard en la AC Gonzalo Nazareno utilizando para la petición la utilidad “gestiona”.
Instalamos openssl para crear nuestro certificado
sudo apt install openssl
Se crea la clave
openssl genrsa 4096 > /etc/ssl/private/sergio.ibanez.key
Se crea el fichero csr
openssl req -new -key /etc/ssl/private/sergio.ibanez.key -out /root/sergio.ibanez.csr
C=ES
ST=Sevilla
L=Dos Hermanas
O=IES Gonzalo Nazareno
OU=Informatica
CN = *.sergio.gonzalonazareno.org
C → Country Name, en este caso como el dominio esta en España ponemos ES. ST → Estado/Provincia L → Localidad/Ciudad O → Nombre de la organización OU → Nombre de la unidad organizativa a la que se le pide el certificado. CN → Nombre del dominio para el que se hará el certificado, en este caso usamos * para que dicho certificado pueda usarse en cualquier maquina con el dominio sergio.gonzalonazareno.org.
Debemos hacer una redirección para forzar el protocolo https (en centos).
Para hacer la redirección sera necesario instalar el modulo ssl y reiniciamos httpd para habilitarlo:
[centos@quijote ~]$ sudo dnf -y install mod_ssl
Activamos el puerto 443 en centos:
[centos@quijote ~]$ sudo firewall-cmd --zone=public --permanent --add-service=https
success
[centos@quijote ~]$ sudo firewall-cmd --reload
success
Movemos los certificados a /etc/pki/tls/certs y la clave a /etc/pki/tls/private y una vez movidos, modificamos el fichero /etc/httpd/conf.d/ssl.conf modificando las siguientes lineas dejandolas de la siguiente forma:
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/sergio.ibanez.crt
SSLCertificateKeyFile /etc/pki/tls/private/sergio.ibanez.key
Recargamos httpd:
sudo systemctl reload httpd
Para que funcionen los ficheros pki, ejecutamos el siguiente comando de forma que se permitirá la restauración de los ficheros en selinux:
restorecon -RvF /etc/pki
Se añaden las siguientes lineas en el fichero nuevo una vez puestos los certificados en sus respectivos sitios.
Fichero inicio_https.conf:
<VirtualHost *:443>
ServerName www.sergio.gonzalonazareno.org
DocumentRoot /var/www/sergio
ErrorLog /var/www/sergio/log/error.log
CustomLog /var/www/sergio/log/requests.log combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/sergio.ibanez.crt
SSLCertificateKeyFile /etc/pki/tls/private/sergio.ibanez.key
</VirtualHost>
Fichero inicio.conf:
<VirtualHost *:80>
ServerName www.sergio.gonzalonazareno.org
DocumentRoot /var/www/html
Redirect 301 / https://www.sergio.gonzalonazareno.org
ErrorLog /var/www/sergio/log/error.log
CustomLog /var/www/sergio/log/requests.log combined
</VirtualHost>
Creamos los enlaces simbólicos:
sudo ln -s /etc/httpd/sites-available/inicio.conf /etc/httpd/sites-enabled/
sudo ln -s /etc/httpd/sites-available/inicio_https.conf /etc/httpd/sites-enabled/
Hay que indicarle a selinux que debe permitir a apache para que pueda acceder al directorio que contiene la clave y el certificado que hemos creado.
Configuraremos una regla DNAT en el cortafuego de la maquina Dulcinea para abrir el puerto 443 y el 80 haciendo uso de iptable.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.0.2.5
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 10.0.2.5
- Instalamos el certificado del AC Gonzalo Nazareno en tu navegador para comprobar que se pueda verificar tu certificado.
Instalamos el certificado en nuestro navegador, por ejemplo en Mozilla Firefox, para ello entramos en Preferencias -> Privacidad & Seguridad -> Certificados -> Ver certificados -> Importar.

Probamos a acceder al fichero info.php que tenemos ya en nuestro servidor web:

Como se ve en la imagen, nos aparece el candado, aunque nos sale como sitio seguro, esto puede deberse a que a la hora de crear el fichero csr, el dato OU esta mal y por lo tanto no queda validado correctamente (se puso informatica cuando debe ser informática).
Comments