Configuración de HTTPS en nuestro VPS
¿Qué es un certificado SSL?
Un certificado ssl es un documento que se utiliza para encriptar la información que se envía entre un servidor y un cliente. Este certificado se utiliza para que la información que se envía entre el servidor y el cliente no pueda ser leída por terceros.
¿Cómo funciona?
A grandes rasgos los pasos de una conexión a una web con certificado SSL serían los siguientes.
- Un usuario, mediante su navegador se conecta al sitio web
- El navegador solicita al servidor web una identificación.
- El servidor web envía al navegador una copia de su certificado SSL.
- El navegador comprueba si el certificado SSL es confiable. Si el certificado es correcto se envía un mensaje al servidor web.
- El servidor web devuelve un acuse de recibo firmado digitalmente y se inicia una conexión cifrada con SSL.
Pruebas de demostración
-
Primero debemos cercionarnos de que nuestro navegador tiene el certificado SSL instalado.
-
¿Qué opción has elegido? ¿Qué pruebas realiza Let’s Encrypt para asegurar que somos los administrados del sitio web al elegir esa opción?
-
La opción que he elegido enmi caso es la de Wildcard. Esta opción es la que permite que el certificado sea válido para todos los subdominios de un dominio.
-
Valida mediante una string generada de forma aleatoria por Let’s Encrypt y que se debe introducir como registro TXT en el dominio DNS bajo
_acme-challenge.mariatec.es. Let’s Encrypt hará una petición DNS para que se devuelva dicha string y si coindice, valida la propiedad del dominio.
maria@asir:~$ sudo certbot --server https://acme-v02.api.letsencrypt.org/directory -d *.mariatec.es --manual --preferred-challenges dns-01 certonly Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Requesting a certificate for *.mariatec.es Performing the following challenges: dns-01 challenge for mariatec.es ------------------------------------------------------------------------------- Please deploy a DNS TXT record under the name _acme-challenge.mariatec.es with the following value: ********************************************************* Before continuing, verify the record is deployed. ------------------------------------------------------------------------------- Press Enter to Continue -
-
El fichero de configuración de nuestro sitio web debe tener la siguiente configuración:
-
Vamos a configurar un crontab para que se renueve el certificado automáticamente cada tres meses. Para ello, debemos ejecutar el siguiente comando:
maria@asir:~$ sudo crontab -eY al final del fichero añadimos la siguiente línea:
0 0 27 */3 * /etc/letsencrypt/certrenew.sh
Con este cron, que se ejecutará cada 27 de cada 3 meses, se ejecutará el script que hemos creado para renovar el certificado. El script es el siguiente:
#!/bin/bash certbot renew --non-interactive --no-random-sleep-on-renew --cert-name mariatec.esLas opciones que están implementadas en el script son las siguientes:
--non-interactive: Se realiza de formaautomática sin intervención del usuario, ya que es una tarea programada.--no-random-sleep-on-renew: Se evita que se produzca un retardo aleatorio entre 0 y 30 segundos antes de la renovación. Esto se debe a que let’s encrypt incluye un random wait entre renovaciones para evitar que, en caso de que un usuario se equivoque, se realicen muchas renovaciones en un corto periodo de tiempo. Por ello, con esta opción lo desabilitamos para que la renovación se realice de forma inmediata.--cert-name mariatec.es: Especifica el nombre del certificado que se va a renovar. Aunque hayamos pedido un wildcard, si nos dirigimos al directorio/etc/letsencrypt/live/veremos que se ha creado un directorio por cada subdominio que hemos solicitado. Por ello, debemos especificar el nombre del certificado que queremos renovar.
Comprobación de la configuración
Como podemos ver en las siguientes capturas, la configuración se ha realizado correctamente y nuestro virtualhost esta configurado correctamente para que se pueda acceder a él mediante https.