Si tras configurar el dominio en nuestra imagen de WordPress quieres configurar tu blog como un sitio seguro con un certificado SSL, lo que debes de hacer es seguir los pasos que te contamos a continuación.
Deberás instalar Certbot para instalar un certificado gratuito de Let’s Encrypt. Para realizar estos pasos será necesario que te conectes por SSH al servidor de WordPress que hemos creado y configurarlo como explicamos a continuación.
Primeros pasos
Lo primero que tendrás que hacer antes de la instalación del certificado, es configurar el dominio en WordPress. Para ello, tendrás que seguir los pasos que se indica en este otro tutorial Añadir dominio en la imagen de WordPress. Es importante, que cuando añadas el dominio en WordPress, en esta ocasión, pongas HTTPS en vez de HTTP:
Una vez guardados los cambios, la web dejará de funcionar. Es entonces cuando tendrás que conectarte por SSH al servidor y realizar los siguientes pasos.
Instalación manual del certificado SSL
Instalar los siguientes paquetes para gestionar los certificados con Certbot:
# apt install certbot python3-certbot-nginx
Luego tendrás que modificar el fichero de configuración NGINX del site:
# nano /etc/nginx/sites-enabled/default
Y cambiar la línea server_name por tu dominio. Ejemplo (añadir con www es opcional, no es necesario):
server_name midominio.es www.midominio.es;
Guarda y reinicia el servicio Nginx:
# systemctl reload nginx
Y finalmente, genera el certificado con lo siguiente:
# certbot --authenticator webroot -w /var/www/html/wordpress/ --redirect --installer nginx -d midominio.es
Si has añadido www, deberás ejecutar esto:
# certbot --authenticator webroot -w /var/www/html/wordpress/ --redirect --installer nginx -d midominio.es -d www.midominio.es
Instalación automática del certificado SSL
Para automatizar todo el proceso, hemos creado un script para ejecutar la instalación con un solo comando. Comprueba tu sistema operativo ejecutando:
# hostnamectl
Descarga el script correspondiente para tu versión de Ubuntu y permite la ejecución de él.
Ubuntu 18.04 LTS:
# wget https://gitlab.com/clouding.io-tech.support/certbot-ssl-images/raw/master/wp-nginx-ssl.sh # chmod u+x wp-nginx-ssl.sh
Ubuntu 20.04 LTS:
# wget https://gitlab.com/clouding.io-tech.support/certbot-ssl-images/-/raw/master/wp-nginx-ssl-u20.sh
# chmod u+x wp-nginx-ssl-u20.sh
Y la sintaxis para generar el certificado sería:
# ./wp-nginx-ssl-u20.sh [domain] [e-mail]
Por ejemplo:
# ./wp-nginx-ssl-u20.sh clouding.io no-reply@clouding.io
Si además quieres añadir un alias para www, puedes ejecutarlo de la siguiente forma para crear el SSL para www y sin www:
# Ubuntu 18.04
# ./wp-nginx-ssl.sh clouding.io no-reply@clouding.io www
# Ubuntu 20.04
# ./wp-nginx-ssl-u20.sh clouding.io no-reply@clouding.io www
El e-mail debe ser uno que esté operativo y el dominio debe apuntar al servidor.
Configurar Nginx para superar los test de seguridad (Opcional)
Con estos 5 parámetros obtendrás una puntuación de A en www.webpagetest.org, pero para tener el máximo nivel con un A+ tendrás que configurar un header adicional para "Content Security Policy", el cual es bastante complicado, ya que deberás identificar y especificar todas las fuentes fiables que utiliza tu sitio.
add_header Content-Security-Policy "default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';";
Este último caso necesita de muchas pruebas y errores hasta encontrar la configuración óptima que no bloquee tu servidor. Si no estás seguro sobre cómo utilizar esta política, piensa que no es del todo necesaria para tener una buena puntuación de seguridad.
Deshabilitar versiones obsoletas de TLS en los certificados (Opcional)
Actualmente las versiones TLS 1.0 y TLS 1.1 se consideran obsoletas y esto hace que no sea seguro utilizar estas versiones del protocolo TLS. Para ello deberás editar el siguiente archivo:
# vi /etc/letsencrypt/options-ssl-nginx.conf
Edita la variable "ssl_protocols" para dejarla como el siguiente ejemplo:
ssl_protocols TLSv1.2 TLSv1.3;
Con estos cambios deberías pasar todos los test de SSL y seguridad de tu servidor web.