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.
Lo que haremos será instalar Certbot para instalar un certificado gratuito de Let’s Encrypt. Para realizar estos pasos será necesario que nos conectemos por SSH al servidor de WordPress que hemos creado y configurarlo tal y como se explica a continuación.
Primeros pasos
Lo primero que tenemos que hacer antes de la instalación del certificado, es configurar el dominio en WordPress. Para ello, tendremos que seguir los pasos que se indica en este otro tutorial Añadir dominio en la imagen de WordPress. Es importante, que cuando se añada el dominio en WordPress, en esta ocasión, pongamos HTTPS en vez de HTTP:
Una vez guardemos los cambios, la web dejará de funcionar. Es entonces cuando tenemos que conectarnos por SSH al servidor y realizar los siguientes pasos.
Instalación manual del certificado SSL
Primero de todo tendremos que añadir el repositorio para CertBot:
# add-apt-repository ppa:certbot/certbot
Y luego instalamos el siguiente paquete:
# apt install python-certbot-nginx
Luego deberemos de modificar el fichero de configuración de Nginx que se encuentra en /etc/nginx/sites-enabled/default y lo editamos
# nano /etc/nginx/sites-enabled/default
Tenemos que cambiar esto:
server_name ubuntu-1804-image;
Por esto (añadir con www es opcional, no es necesario):
server_name midominio.es www.midominio.es;
Guardamos y reiniciamos el servicio Nginx:
# systemctl restart nginx
Y finalmente, generamos el certificado con lo siguiente:
# certbot --authenticator webroot -w /var/www/html/wordpress/ --redirect --installer nginx -d midominio.es
Si habéis añadido www, deberéis de ejecutar este:
# 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. Este script se debe de utilizar de la siguiente forma:
# wget https://gitlab.com/clouding.io-tech.support/certbot-ssl-images/raw/master/wp-nginx-ssl.sh
# chmod u+x wp-nginx-ssl.sh
Y para generar el certificado:
# ./wp-nginx-ssl.sh [domain] [e-mail]
Por ejemplo:
# ./wp-nginx-ssl.sh clouding.io [email protected]
El e-mail debe ser un e-mail que esté operativo y el dominio debe de apuntar al servidor.
Configurar Nginx para superar los test de seguridad (Opcional)
Con estos 5 parámetros obtendremos una puntuación de A en www.webpagetest.org, pero para tener el máximo nivel con un A+ tendremos que configurar un header adicional para "Content Security Policy", el cual es bastante complicado, ya que deberemos de identificar y especificar todas las fuentes fiables que utiliza nuestro 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 optima que no bloquee nuestro servidor. Si no estamos seguros de cómo utilizar esta política 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 editaremos el siguiente archivo:
# vi /etc/letsencrypt/options-ssl-nginx.conf
Editaremos la variable "ssl_protocols" para dejarla como el siguiente ejemplo:
ssl_protocols TLSv1.2 TLSv1.3;
Con estos cambios deberíamos pasar todos los test de SSL y seguridad de nuestro servidor web.