Clicky

Cómo obtener la máxima calificación A+ en SSL LABS

ssl tls vistaalmar

Configurar los archivos ssl.conf y httpd.conf

Cada vez que monto un nuevo servidor se me olvidan algunas cosas que luego tengo que ir corrigiendo.

Una de ellas es la de obtener la máxima calificación A+ en el test de seguridad de los certificados SSL/TLS en la página SSL LABS de Qualys.

Suponiendo que en nuestro servidor tengamos la última versión de OpenSSL (un robusto paquete de herramientas de administración y bibliotecas relacionadas con la criptografía, que suministran funciones criptográficas a otros paquetes como OpenSSH y navegadores web - para acceso seguro a sitios HTTPS), debemos además tener bien configurado su archivo ssl.conf - en el caso de CentOS 7 situado en /etc/httpd/conf.d/ssl.conf - y el/los VirtualHost en el archivo de configuración de Apache: /etc/httpd/conf/httpd.conf

Actualizar OpenSSL a la última versión (para CentOS Linux release 7.2.1511)

Miramos nuestra versión de openssl:

# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

Comprobamos en la página web de descargas de OpenSSL su última version, que al día de hoy es la openssl-1.0.2g y la descargamos con el siguiente comando:

# cd /usr/local/src
# wget https://www.openssl.org/source/openssl-1.0.2g.tar.gz

Descomprimimos:

# tar -zxf openssl-1.0.2g.tar.gz

Compilamos:

# cd openssl-1.0.2g
# ./config
# make
# make test
# make install

Si la versión que hemos instalado no es la 1.0.2g debemos hacer lo siguiente:

# mv /usr/bin/openssl /root/
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

Y comprobamos que ahora si tengamos la última versión de OpenSSL:

# openssl version
OpenSSL 1.0.2g 1 Mar 2016

Configurar el archivo ssl.conf

Editamos el archivo que se encuentra en esta ruta: /etc/httpd/conf.d/ssl.conf

E inmediatamnete encima de la línea <VirtualHost _default_:443> vamos a colocar las tres instrucciones de abajo, quedando así:

SSLCipherSuite HIGH:!aNULL
SSLProtocol all -SSLv2 -SSLv3 -TLSv1
SSLHonorCipherOrder on
<VirtualHost _default_:443>

Añadir los certificados a la configuración de los VirtualHost de Apache

Como explicaba en este artículo podemos obtener certificados para conexiones cifradas seguras, que nos facilitará varios archivos con certificados cifrados y los colocaremos en la configuración de Apache: /etc/httpd/conf/httpd.conf al final de cada VirtualHost con el puerto 443 que tengamos en el servidor, de esta manera:

<VirtualHost 91.121.31.113:443 [2001:41d0:1:7271::1]:443>
ServerName vistaalmar.es
ServerAlias www.vistaalmar.es
ServerAlias webmail.vistaalmar.es
ServerAlias admin.vistaalmar.es
. . . . . . . más líneas . . . .
. . . . . . . . . . . . . . . . .
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.vistaalmar.es/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.vistaalmar.es/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.vistaalmar.es/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/www.vistaalmar.es/fullchain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
</VirtualHost>

Si además queréis un añadido de seguridad colocar en cualquier lugar del archivo httpd.conf (fuera de los VirtualHost) las siguientes líneas:

# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"

Con ellas desplegaremos en el servidor el HTTP Strict Transport Security (HSTS) con larga duración.

Alguno me dirá ¡Bueno, ¿y porqué no predicas con el ejemplo teniendo esta página con conexión segura HTTPS?

Sencillamente porque, de momento, la autoridad cerficadora que utilizo (Let"™s Encrypt) no genera certificados para los nombres de dominio internacionalizados, es decir que lleven acentos o tildes como en el caso de apañados.es, pero en el artículo que digo arriba (Certificados HTTPS para toda la vida con un único pago) tenéis varios ejemplos donde se puede comprobar la máxima calificación A+ de SSL LABS, y todos ellos están en el mismo servidor web que esta página tan apañada.

Jesus_Caceres