ACTUALIZADO 21/09/2020. Parece ser que Certbot ya no está disponible para Debian 8 Jessie, ya no aparece en el desplegable de la web oficial para su descarga. Tampoco está disponible el repositorio que agregamos manualmente para la instalación del software, por lo que solo será compatible con versiones de Debian superiores a la 9, inclusive, en donde figura este software dentro de los repositorios oficiales.
Uno de los problemas a los que se deben de enfrentar todas aquellas personas con un servicio web sin cifrar, corriendo bajo el protocolo HTTP y con datos que no deben de ser transmitidos en texto plano, es el de habilitar el protocolo seguro HTTPS. Es más, ahora todas las páginas web, ya sean estáticas o no, van a tener que correr bajo el protocolo seguro tras la decisión que Google va a aplicar sobre su navegador Chrome y la clasificación de las webs sin HTTPS.
El mayor inconveniente era encontrar una entidad certificadora que emitiera certificados baratos, para su uso en servicios web domésticos, como un almacenamiento en la nube o un servidor de correo con acceso web desde un equipo instalado en tu propia casa. En estos casos gastar una media de 100€ en un certificado no compensa para este escenario, y dar con certificados baratos no es tarea fácil. De momento para este blog, y para otros servicios web alojados en el salón de mi casa, se están usando los certificados de Comodo adquiridos a través de Namecheap (web oficial pincha aquí) los cuales ofrecen un certificado SSL/TLS por 6€ al año. Pero este escenario va a cambiar con la llegada de Let’s Encrypt.
Hace algo más de un año intenté instalar esta entidad en un servidor para poder gestionar este tipo de certificados, pero tras varias horas de pelearme con errores, dependencias imposibles y desesperación decidí abortar la misión. Hoy en día ya no es necesaria tanta complejidad, siendo una tarea tremendamente sencilla.
Vamos al lio!!!
Tabla de contenidos
¿Qué es Let’s Encrypt?
Let’s Encrypt, según su web oficial, es una autoridad certificadora gratuita, automatizada y abierta, destinada para el beneficio público, ofrecido por el Internet Security Research Group (ISRG), creada en mayo del 2013 como hogar de proyectos de infraestructura digital para el beneficio público, cuyo fin es reducir las barreras económicas, tecnológicas y educacionales para securizar las comunicaciones a través de Internet.
Entre sus sponsors están Mozilla, the Electronic Frontier Foundation, the University of Michigan, Cisco y Akamai. Casi «na» !!!
Les dan a las personas certificados digitales que necesitan para habilitar HTTPS completamente gratuitos, de la manera más sencilla para el usuario que les es posible. Hacen esto con el único fin de crear una web más segura y respetuosa con la privacidad.
Sus claves:
- Gratuito.
- Automático.
- Seguro.
- Transparente.
- Abierto.
- Cooperativo.
Sus certificados tienen una vigencia de 3 meses, por este motivo tendremos que renovarlo varias veces al año, aunque para ello disponemos de un sencillo comando que configuraremos en el crontab del sistema, como veremos más adelante.
Si quieres conocer más sobre esta autoridad certificadora puedes acceder a su web oficial pinchando aquí.
Escenario
IMPORTANTE, para versiones anteriores a Debian 9 ya no es compatible.
Vamos a instalar el software necesario para gestionar estos certificados en una Raspberri Pi modelo 2B con el sistema operativo Raspbian, aunque es extensible a los modelos 3.
Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie
Para ello haremos uso del certbot que es el programa que se comunica con la plataforma de Let’s Encrypt para gestionar los certificados, para su creación/instalación/renovación/revocación.
El servidor web que vamos a utilizar en esta entrada es Nginx, aunque se puede utilizar cualquier otro. Sin embargo Nginx y Apache son compatibles con Certbot para automatizar las configuraciones necesarias en la redirección de los protocolos HPPT -> HTTPS:
nginx version: nginx/1.6.2
Requisitos
Debemos de disponer de los siguientes elementos para poder gestionar estos certificados:
- Servidor web, stand alone o compartido (webroot).
- Dominio público, que debe de apuntar a la IP del servidor.
- IP fija o un servicio DNS para direccionamiento dinámico, como DynDNS (pincha aquí).
- Conexión al puerto 80 del servidor web desde el exterior.
- Conexión al puerto 443 para levantar el servicio una vez instalado el certificado.
- NO tener un certificado instalado previamente para el dominio que vamos a utilizar.
El servidor web puede ser stand alone con un único dominio, o compartido con distintos Virtual Hosts configurados.
Instalación del programa
Vamos a proceder con los pasos necesarios para su instalación.
Agregar repositorio
IMPORTANTE, para versiones anteriores a Debian 9 ya no es compatible.
Si usas la última versión de Raspbian con Stretch puedes saltar al apartado de instalación pinchando aquí, ya que el paquete que vamos a instalar se encuentra entre los repositorios de esta versión.
Si usas la versión Jessie, como es nuestro caso, debemos de agregar el repositorio necesario antes de instalar el paquete. Cuidado!!!, este repositorio al no estar incluido en nuestra versión actual puede contener software que no ha sido testado.
Editamos el archivo sources.list:
sudo vim /etc/apt/sources.list
Agregamos la siguiente línea y guardamos:
deb http://ftp.debian.org/debian jessie-backports main
Claves públicas (opcional)
Podemos agregar las claves públicas del repositorio agregado, aunque yo en un principio no lo hice y no pasó nada. Sin embargo, si queremos estar seguros de lo que vamos a instalar desde este repositorio es recomendable descargarse las claves con los siguientes comandos:
gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553 gpg -a --export 8B48AD6246925553 | sudo apt-key add - gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010 gpg -a --export 7638D0442B90D010 | sudo apt-key add -
Actualizar el listado de paquetes
Una vez cargado el respositorio actualizamos el listado de los paquetes disponibles.
sudo apt-get update
Instalar Certbot
Instalamos el software Certbot de Let’s Encrypt:
sudo apt-get install certbot
Confirmamos la versión instalada:
$ certbot --version certbot 0.10.2
Comprobamos que no existen certificados disponibles en estos momentos:
$ sudo certbot certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- No certs found. -------------------------------------------------------------------------------
Instalación del certificado
Disponemos de dos métodos de instalación, la integrada (framework para Apache o Nginx) y la manual.
Instalación integrada
Ahora podemos configurar el entorno para ser usado con Nginx, también disponible para Apache, o podemos usarlo tal cual se ha instalado. Esto es debido a que si lo configuramos para cualquiera de estos servidores web el mismo programa nos ofrece la opción de configurar las redirecciones HTTP->HTTPS de manera automática sin que tengamos que hacer nosotros nada. En esta entrada vamos a realizar una instalación manual.
De todas formas, si quieres investigar y probar este plugin aquí te dejo los pasos para su instalación.
Existen varios paquetes para integrar Certbot con Nginx y Apache:
$ sudo apt-cache search certbot certbot - automatically configure HTTPS using Let's Encrypt letsencrypt - transitional dummy package python-certbot - main library for certbot python-certbot-doc - client documentation for certbot python-certbot-apache - Apache plugin for Certbot python-certbot-apache-doc - Apache plugin documentation for Certbot python-certbot-nginx - Nginx plugin for Certbot python-certbot-nginx-doc - Nginx plugin documentation for Certbot
En nuestro caso instalamos el plugin para nuestro servidor web:
sudo apt-get install python-certbot-nginx
Se instalan los paquetes python-certbot-nginx, python-pyparsing.
Y ahora configuramos el paquete para nuestro servidor web sin indicar los dominios en el comando, lo que nos obliga a contestar ciertas preguntas sobre los dominios instalados e identificados en el servidor:
$ sudo certbot --nginx Saving debug log to /var/log/letsencrypt/letsencrypt.log Which names would you like to activate HTTPS for? ------------------------------------------------------------------------------- 1: tiraquelibras.com 2: www.tiraquelibras.com 3: yeloquehay.com 4: correu.yeloquehay.com 5: www.yeloquehay.com ------------------------------------------------------------------------------- Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): ...
O indicamos los dominios en el mismo comando:
$ sudo certbot --nginx -d yeloquehay.com -d www.yeloquehay.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: ...
Llegará un punto en el que nos pregunta si queremos que Certbot configure las redirecciones al puerto seguro a nivel de servidor web, añadiendo las líneas de código necesarias automáticamente.
Llegado a este punto tendríamos el certificado instalado y configurado para el o los dominios solicitados, no siendo necesario seguir con el resto de pasos de esta entrada.
Instalación manual
Para la instalación manual podemos indicar que el servidor web es stand alone, o lo que es lo mismo con un único dominio configurado, o compartido, con varios Virtual Servers configurados, que es nuestro caso. Vamos a iniciar la instalación para el dominio yeloquehay.com y su subdominio con www.
Stand alone:
sudo certbot --standalone -d yeloquehay.com -d www.yeloquehay.com
Webroot (compartido), este es nuestro escenario. Tenemos que indicar el Document Root en donde se encuentra alojada la web del dominio que vamos a indicar:
sudo certbot certonly --webroot -w /media/raid/data/yeloquehay.com/www/ -d yeloquehay.com -d www.yeloquehay.com
Estos son los pasos que va ejecutando el programa:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: http-01 challenge for yeloquehay.com http-01 challenge for www.yeloquehay.com Using the webroot path /media/raid/data/yeloquehay.com/www for all unmatched domains. Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0003_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0003_csr-certbot.pem IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/yeloquehay.com/fullchain.pem. Your cert will expire on 2019-05-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew". - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Ahora podremos crear la redirección HTTP -> HTTPS indicando los archivos del certificado, teniendo en cuenta su fecha de expiración:
- Archivo Cert -> /etc/letsencrypt/live/yeloquehay.com/fullchain.pem
- Archivo Key -> /etc/letsencrypt/live/yeloquehay.com/privkey.pem
- Fecha de expiración del archivo Cert -> Your cert will expire on 2019-05-18
Contenido del archivo VirtualHost con la redirección, yeloquehay.conf, ojo con la configuración PHP que tengas en tu servidor ya que yo tengo dos versiones distintas instaladas, pero para este VirtualHost uso PHP5. Configura este apartado según las preferencias de tu sevidor:
server { listen 80; server_name www.yeloquehay.com yeloquehay.com; return 301 https://$server_name$request_uri; #forzar a https; } server { listen 443 ssl; server_name www.yeloquehay.com yeloquehay.com; root /media/raid/data/yeloquehay.com/www; index index.html index.htm index.php; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /media/raid/data/yeloquehay.com/www; } error_log /media/raid/data/yeloquehay.com/logs/error.log error; access_log /media/raid/data/yeloquehay.com/logs/access.log; client_max_body_size 10G; # set max upload size fastcgi_buffers 64 4k; # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) add_header Strict-Transport-Security max-age=15768000; ssl on; ssl_certificate /etc/letsencrypt/live/yeloquehay.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yeloquehay.com/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE-2014-3566) ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_session_cache shared:SSL:5m; ssl_prefer_server_ciphers on; location / { index index.html index.php; allow all; } # MODIFICA SEGUN TU VERSION DE PHP location ~ \.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; # fastcgi_param HTTPS on; fastcgi_pass unix:/var/run/php5-fpm.sock; #fastcgi_pass php-handler; fastcgi_index index.php; # si fallara quitar esta linea fastcgi_read_timeout 600; } }
Recordar reiniciar el servicio del servidor web:
sudo service nginx restart
Revisar cualquier error que os pueda dar el reinicio, ya que alguno de los pasos previos no está bien ejecutado.
Ahora el certificado que se muestra al acceder a la URL es el de Let’s Encrypt:
Comprobamos el estado de los certificados instalados:
$ sudo certbot certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Found the following certs: Certificate Name: yeloquehay.com Domains: yeloquehay.com www.yeloquehay.com Expiry Date: 2019-05-18 12:08:42+00:00 (VALID: 88 days) Certificate Path: /etc/letsencrypt/live/yeloquehay.com/fullchain.pem Private Key Path: /etc/letsencrypt/live/yeloquehay.com/privkey.pem -------------------------------------------------------------------------------
Actualización de los certificados
Podemos actualizar un certificado concreto o todos los instalados con Let’s Encrypt. Para ello usamos comandos distintos.
Dominio concreto – manual
Para actualizar el certificado de un dominio en concreto debemos indicar los siguientes datos:
- El dominio dentro del listado de certificados instalados disponibles.
- Si el servidor web es standalone o webroot.
- Si mantenemos los archivos existentes o renovamos y sobrescribimos estos.
- Como nuestro caso es compartido debemos de indicar el nuevo webroot, o path en donde se encuentra la aplicación web instalada.
Renovar y mantener archivos existentes
Estos son los pasos para el caso de mantener los archivos existentes:
$ sudo certbot certonly -d yeloquehay.com Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? ------------------------------------------------------------------------------- 1: Place files in webroot directory (webroot) 2: Spin up a temporary webserver (standalone) ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1 Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: http-01 challenge for yeloquehay.com Select the webroot for yeloquehay.com: ------------------------------------------------------------------------------- 1: Enter a new webroot ------------------------------------------------------------------------------- Press 1 [enter] to confirm the selection (press 'c' to cancel): 1 Input the webroot for yeloquehay.com: (Enter 'c' to cancel):/media/raid/data/yeloquehay.com/www Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0005_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0005_csr-certbot.pem IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/yeloquehay.com-0001/fullchain.pem. Your cert will expire on 2019-05-19. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Se genera un nuevo directorio para los certificados del dominio, manteniendo los existentes:
$ sudo ls -altr /etc/letsencrypt/live/ total 16 drwxr-xr-x 8 root root 4096 feb 17 13:24 .. drwxr-xr-x 2 root root 4096 feb 18 14:04 yeloquehay.com drwx------ 4 root root 4096 feb 18 15:43 . drwxr-xr-x 2 root root 4096 feb 18 15:52 yeloquehay.com-0001
Renovar y sobrescribir archivos existentes
Estos son los pasos si escogemos renovar y sobrescribir los archivos existentes:
$ sudo certbot certonly -d yeloquehay.com Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? ------------------------------------------------------------------------------- 1: Place files in webroot directory (webroot) 2: Spin up a temporary webserver (standalone) ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1 Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Cert not yet due for renewal You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry. (ref: /etc/letsencrypt/renewal/yeloquehay.com-0001.conf) What would you like to do? ------------------------------------------------------------------------------- 1: Keep the existing certificate for now 2: Renew & replace the cert (limit ~5 per 7 days) ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Renewing an existing certificate Performing the following challenges: http-01 challenge for yeloquehay.com Select the webroot for yeloquehay.com: ------------------------------------------------------------------------------- 1: Enter a new webroot ------------------------------------------------------------------------------- Press 1 [enter] to confirm the selection (press 'c' to cancel): 1 Input the webroot for yeloquehay.com: (Enter 'c' to cancel):/media/raid/data/yeloquehay.com/www Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0006_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0006_csr-certbot.pem IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/yeloquehay.com-0001/fullchain.pem. Your cert will expire on 2019-05-19. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
No se genera un directorio nuevo, sino que se actualizan en el directorio actual:
$ sudo ls -altr /etc/letsencrypt/live total 16 drwxr-xr-x 8 root root 4096 feb 17 13:24 .. drwxr-xr-x 2 root root 4096 feb 18 14:04 yeloquehay.com drwx------ 4 root root 4096 feb 18 15:43 . drwxr-xr-x 2 root root 4096 feb 18 15:55 yeloquehay.com-0001
Todos los dominios – manual y programado
Otra forma de actualizar los certificados es dejando que el mismo programa decida que tiene que actualizar y que no, dependiendo de su fecha de caducidad.
Si se encuentra entre los 7 ~ 5 días previos a su fecha de caducidad este pasará a estado disponible de renovar. De lo contrario no hará nada.
Manual
El comando que usaremos para renovar todos los certificados es el siguiente:
$ sudo certbot renew Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/yeloquehay.com-0001.conf ------------------------------------------------------------------------------- Cert not yet due for renewal ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/yeloquehay.com.conf ------------------------------------------------------------------------------- Cert not yet due for renewal The following certs are not due for renewal yet: /etc/letsencrypt/live/yeloquehay.com-0001/fullchain.pem (skipped) /etc/letsencrypt/live/yeloquehay.com/fullchain.pem (skipped) No renewals were attempted.
Programado
Podemos automatizar la renovación de los certificados instalados con Let’s Encrypt en el servidor programando una tarea del crontab en el propio sistema.
Como la renovación de un certificado requiere el reinicio del servidor web haremos uso de las funciones pre-hook y post-hook para ejecutar comandos del sistema antes y después de la tarea ejecutada, o renew-hook para ejeuctar el comando tras la tarea de renovación en concreto.
Ejecución diaria a las 2:30 am, desde el usuario root:
$ crontab -e 30 2 * * * /usr/bin/certbot renew --renew-hook "service nginx reload"
Actualización sin aplicar cambios – test
También podemos comprobar el resultado de ejecutar una renovación de todos los certificados sin generar ni aplicar archivo alguno. De esta manera podemos identificar problemas a la hora de ejecutar la renovación de manera controlada.
$ sudo certbot renew --renew-hook "sudo service nginx reload" --dry-run Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/yeloquehay.com-0001.conf ------------------------------------------------------------------------------- Cert not due for renewal, but simulating renewal for dry run Starting new HTTPS connection (1): acme-staging.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: http-01 challenge for yeloquehay.com http-01 challenge for www.yeloquehay.com Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0016_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0016_csr-certbot.pem Dry run: skipping renewal hook command: sudo service nginx reload ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates below have not been saved.) Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/yeloquehay.com-0001/fullchain.pem (success) ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates above have not been saved.)
Revocar un certificado
Al revocar un certificado Let’s Encrypt lo publicará a través del OCSP (Online Certificate Status Protocol), el cual es consultado por algunos navegadores para identificar si el certificado es de confianza o no. Esto puede darse cuando por error compartimos las claves privadas de manera pública, por ejemplo. Documentación oficial pincha aquí.
$ sudo certbot revoke --cert-path /etc/letsencrypt/live/yeloquehay.com/fullchain.pemSaving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org ------------------------------------------------------------------------------- Congratulations! You have successfully revoked the certificate that was located at /etc/letsencrypt/live/yeloquehay.com/fullchain.pem -------------------------------------------------------------------------------
Eliminar un certificado
Para eliminar un certificado de los cargados en nuestro servidor con Certbot ejecutamos el siguiente comando, indicando del listado cual queremos borrar.
$ sudo certbot delete Saving debug log to /var/log/letsencrypt/letsencrypt.log Which certificate would you like to delete? ------------------------------------------------------------------------------- 1: yeloquehay.com 2: yeloquehay.com-0001 ------------------------------------------------------------------------------- Press 1 [enter] to confirm the selection (press 'c' to cancel): 1 ------------------------------------------------------------------------------- Deleted all files relating to certificate yeloquehay.com. -------------------------------------------------------------------------------
Este quedaría eliminado:
$ sudo certbot certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Found the following certs: Certificate Name: yeloquehay.com-0001 Domains: yeloquehay.com www.yeloquehay.com Expiry Date: 2019-05-19 14:52:09+00:00 (VALID: 89 days) Certificate Path: /etc/letsencrypt/live/yeloquehay.com-0001/fullchain.pem Private Key Path: /etc/letsencrypt/live/yeloquehay.com-0001/privkey.pem -------------------------------------------------------------------------------
Tareas de limpieza
Cuando generamos un certificado o renovamos uno existente se generan ciertos archivos necesarios para obtener el certificado final. Estos son los archivos .csr y .key, los cuales se almacenan en los directorios /etc/letsencrypt/csr/ y /etc/letsencrypt/keys/.
$ ls /etc/letsencrypt/csr/ 0000_csr-certbot.pem 0004_csr-certbot.pem 0008_csr-certbot.pem 0012_csr-certbot.pem 0016_csr-certbot.pem 0001_csr-certbot.pem 0005_csr-certbot.pem 0009_csr-certbot.pem 0013_csr-certbot.pem 0002_csr-certbot.pem 0006_csr-certbot.pem 0010_csr-certbot.pem 0014_csr-certbot.pem 0003_csr-certbot.pem 0007_csr-certbot.pem 0011_csr-certbot.pem 0015_csr-certbot.pem $ ls /etc/letsencrypt/keys/ 0000_key-certbot.pem 0004_key-certbot.pem 0008_key-certbot.pem 0012_key-certbot.pem 0016_key-certbot.pem 0001_key-certbot.pem 0005_key-certbot.pem 0009_key-certbot.pem 0013_key-certbot.pem 0002_key-certbot.pem 0006_key-certbot.pem 0010_key-certbot.pem 0014_key-certbot.pem 0003_key-certbot.pem 0007_key-certbot.pem 0011_key-certbot.pem 0015_key-certbot.pem
Es buena práctica borrarlos cada cierto tiempo.
Borrado manual
Los podemos borrar a mano.
rm -rf /etc/letsencrypt/csr/* rm -rf /etc/letsencrypt/keys/* service nginx reload
Borrado programado
O desde el crontab del usuario root.
30 3 * * * /bin/rm -rf /etc/letsencrypt/csr/* && /bin/rm -rf /etc/letsencrypt/keys/*
Comprobar validez del certificado
Una vez instalado el certificado podemos comprobar su validez con alguna herramienta online, como el test de Qualys desde la URL https://www.ssllabs.com/ssltest/analyze.html
Esto lleva un tiempo hasta finalizar todos los chequeos.
Consideraciones finales
Es importante mantener los certificados SSL/TLS configurados y permanentemente actualizados, colaborando a crear y mantener un Internet cada vez más seguro, pero que no nos suponga un esfuerzo económico grande. Para ello contamos con esta fabulosa plataforma sin ánimo de lucro, la cual está siendo muy bien acogida tanto por corporaciones como usuarios.
Enlaces de interés
Enlaces consultados, pincha aquí, aquí y aquí.
Let’s Encrypt oficial, pincha aquí.
Let’s Encrypt Wikipedia, pincha aquí.
Internet Security Research Group oficial, pincha aquí.
Namecheap certificados oficial, pincha aquí.
Qualys test online, pincha aquí.
Noticia Google y páginas HTTP, pincha aquí.
DynDNS oficial, pincha aquí.