Let’s Encrypt con Apache en Centos

En una entrada anterior explicamos como gestionar certificados de Let’s Encrypt con el servidor web Nginx en una Raspberry Pi 2B con Raspbian (Debian Jessie 8.0) instalado. También explicamos qué es y sus claves de éxito. Por este motivo no vamos a repetir esta información y vamos a centrarnos en su instalación y gestión en un servidor con Centos instalado.

Esta entrada se basa en la versión 6 de Centos. Si quieres instalarlo en un Centos 7 dispones del paquete Certbot en sus repositorios oficiales, pudiendo tomar como referencia de comandos lo mostrado en la entrada anterior sobre la instalación de este en un sistema Debian. Sin embargo, también puedes usar los pasos que vamos a indicar en esta entrada.

Os dejo el enlace a la entrada anterior relacionada con este mismo tema pinchando aquí.


Escenario

Vamos a instalar el software necesario para gestionar certificados en un servidor con el sistema operativo Centos 6.10 instalado.

CentOS release 6.10 (Final)

Para ello clonaremos el repositorio de Let’s Encrypt alojado en GitHub para su ejecución con sistemas Red Hat.

El servidor web utilizado será Apache.

Server version: Apache/2.2.15 (Unix)
Server built:   Jun 19 2018 15:45:13

 


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. En nuestro caso usaremos example.tiraquelibras.com
  • 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.

Instalación de paquetes necesarios

Instalamos el servidor web:

yum install httpd

Y su módulo SSL/TLS:

yum -y install mod_ssl

Iniciamos el servicio web:

service httpd start   # Para Centos 6
systemctl start httpd.service   # Para Centos 7

Ahora instalamos el paquete necesario para obtener Git:

yum install epel-release

Instalamos Git junto a todas sus dependencias:

yum install git

IMPORTANTE!!!, debemos de tener Python3 instalado, ya que de  lo contrario cualquier script configurado en el Crontab fallará:

yum install python34

 

Clonado del repositorio

En este punto procedemos a clonar el repositorio de GitHub en el directorio /usr/local:

cd /usr/local/

git clone https://github.com/letsencrypt/letsencrypt

Ya tenemos nuestro programa disponible para su ejecución:

# cd /usr/local/letsencrypt/

# ls
acme                        certbot-dns-ovh          letshelp-certbot
appveyor.yml                certbot-dns-rfc2136      LICENSE.txt
AUTHORS.md                  certbot-dns-route53      linter_plugin.py
certbot                     certbot-dns-sakuracloud  local-oldest-requirements.txt
certbot-apache              certbot-nginx            MANIFEST.in
certbot-auto                certbot-postfix          mypy.ini
certbot-compatibility-test  CHANGELOG.md             pull_request_template.md
certbot-dns-cloudflare      CONTRIBUTING.md          pytest.ini
certbot-dns-cloudxns        docker-compose.yml       README.rst
certbot-dns-digitalocean    Dockerfile               readthedocs.org.requirements.txt
certbot-dns-dnsimple        Dockerfile-dev           setup.cfg
certbot-dns-dnsmadeeasy     Dockerfile-old           setup.py
certbot-dns-gehirn          docs                     tests
certbot-dns-google          examples                 tools
certbot-dns-linode          ISSUE_TEMPLATE.md        tox.cover.py
certbot-dns-luadns          letsencrypt-auto         tox.ini
certbot-dns-nsone           letsencrypt-auto-source

OJO!!! Si ejecutamos la ayuda por primera vez acaba de instalar todas las dependencias que precisa, que no cunda el pánico. En mi caso estas fueron las dependencias pendientes:

================================================================================================================
 Paquete                          Arquitectura          Versión                       Repositorio         Tamaño
================================================================================================================
Instalando:
 augeas-libs                      x86_64                1.0.0-10.el6                  base                314 k
 libffi-devel                     x86_64                3.0.5-3.2.el6                 base                 18 k
 python-tools                     x86_64                2.6.6-66.el6_8                base                871 k
 python-virtualenv                noarch                12.0.7-1.el6                  epel                1.7 M
Instalando para las dependencias:
 tix                              x86_64                1:8.4.3-5.el6                 base                252 k
 tk                               x86_64                1:8.5.7-5.el6                 base                1.4 M
 tkinter                          x86_64                2.6.6-66.el6_8                base                258 k

Resumen de la transacción
================================================================================================================
Instalar       7 Paquete(s)

Tamaño total de la descarga: 4.8 M
Tamaño instalado: 11 M
…
¡Listo!
Creating virtual environment...
Installing Python packages...

Installation succeeded.

Una vez completado el punto anterior obtenemos la ayuda del comando:

# cd /usr/local/letsencrypt

# ./letsencrypt-auto --help

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  letsencrypt-auto [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...

Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate. The most common SUBCOMMANDS and flags are:

obtain, install, and renew certificates:
    (default) run   Obtain & install a certificate in your current webserver
    certonly        Obtain or renew a certificate, but do not install it
    renew           Renew all previously obtained certificates that are near
expiry
    enhance         Add security enhancements to your existing configuration
   -d DOMAINS       Comma-separated list of domains to obtain a certificate for

  --apache          Use the Apache plugin for authentication & installation
  --standalone      Run a standalone webserver for authentication
  --nginx           Use the Nginx plugin for authentication & installation
  --webroot         Place files in a server's webroot folder for authentication
  --manual          Obtain certificates interactively, or using shell script
hooks

   -n               Run non-interactively
  --test-cert       Obtain a test certificate from a staging server
  --dry-run         Test "renew" or "certonly" without saving any certificates
to disk

manage certificates:
    certificates    Display information about certificates you have from Certbot
    revoke          Revoke a certificate (supply --cert-path or --cert-name)
    delete          Delete a certificate

manage your account with Let's Encrypt:
    register        Create a Let's Encrypt ACME account
    update_account  Update a Let's Encrypt ACME account
  --agree-tos       Agree to the ACME server's Subscriber Agreement
   -m EMAIL         Email address for important account notifications

More detailed help:

  -h, --help [TOPIC]    print this message, or detailed help on a topic;
                        the available TOPICS are:

   all, automation, commands, paths, security, testing, or any of the
   subcommands or plugins (certonly, renew, install, register, nginx,
   apache, standalone, webroot, etc.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 


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 el servidor web, en nuestro caso Apache aunque  también disponible para otros como Nginx, o podemos usarlo tal cual se ha instalado. Esto es debido a que si lo configuramos para cualquiera de estos servidores web él mismo se encarga de configurar las redirecciones HTTP->HTTPS de manera automática, sin que tengamos que hacer nada.

Ejecutamos el comando para generar el certificado de nuestro dominio example.tiraquelibras.com:

./letsencrypt-auto --apache  -d example.tiraquelibras.com

Nos pregunta si queremos que el Framework para Apache haga la redirección de manera automática. Le indicamos que sí seleccionado la opción Redirect, opción 2:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Obtaining a new certificate
Created an SSL vhost at /etc/httpd/conf.d/example-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/conf.d/example-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Primero nos indica los archivos que ha modificado para configurar la redirección, y si todo finalizó correctamente se muestra la URL de SSLLabs (https://www.ssllabs.com) para confirmar la validez del certificado, junto con la fecha de expiración dentro de 3 meses:

Redirecting vhost in /etc/httpd/conf.d/example.conf to ssl vhost in /etc/httpd/conf.d/example-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://example.tiraquelibras.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=example.tiraquelibras.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.tiraquelibras.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.tiraquelibras.com/privkey.pem
   Your cert will expire on 2019-05-27. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again with the "certonly" option. To
   non-interactively renew *all* of your certificates, run
   "letsencrypt-auto 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

Más adelante mostraremos el contenido de los archivos del VirtualHost, que en nuestro caso son /etc/httpd/conf.d/example.conf y /etc/httpd/conf.d/example-le-ssl.conf.

OJO!!!, el archivo ssl.conf generado contiene las etiquetas <IfModule mod_ssl.c> </IfModule>, pero a mi no me funcionó y por tanto las tuve que comentar.

Comprobamos que el certificado ha sido instalado correctamente y su periodo de validez, junto con los archivos correspondientes a la semilla y certificado finales:

# ./letsencrypt-auto certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: example.tiraquelibras.com
    Domains: example.tiraquelibras.com
    Expiry Date: 2019-05-27 14:22:52+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.tiraquelibras.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.tiraquelibras.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

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 example.tiraquelibras.com

Podemos ejecutar el comando anterior con el Framework para Apache escogiendo la opción 1 No redirect, el cual genera los archivos pero no configura el servidor web para redirigir el tráfico al puerto seguro HTTP->HTTPS.

Stand alone:

./letsencrypt-auto  --standalone -d yeloquehay.com

Webroot (compartido), que es nuestro caso. Tenemos que indicar el Document Root en donde se encuentra alojada la web del dominio que vamos a indicar:

./letsencrypt-auto certonly --webroot -w /var/www/pruebas/ -d example.tiraquelibras.com

Si todo finalizó correctamente se muestran los archivos generados junto a su path y a la fecha de expiración de este:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.tiraquelibras.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.tiraquelibras.com/privkey.pem
   Your cert will expire on 2019-05-27. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again. To non-interactively renew *all* of your
   certificates, run "letsencrypt-auto 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:

Cert -> /etc/letsencrypt/live/example.tiraquelibras.com/fullchain.pem

Key -> /etc/letsencrypt/live/example.tiraquelibras.com/privkey.pem

Your cert will expire on 2019-05-27

 

Archivos VirtualHost

Archivo para el puerto 80 HTTP, con la redirección al puerto seguro:

<VirtualHost *:80>
        ServerAdmin sbastian@telecable.com
        DocumentRoot /var/www/pruebas/
        ServerName example.tiraquelibras.com
        ErrorLog /var/log/httpd/pruebas-error.log
        CustomLog /var/log/httpd/pruebas.log combined
        <Directory /var/www/pruebas/>
             Order Deny,Allow
             Allow from All
        </Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.tiraquelibras.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent]
</VirtualHost>

Archivo para el pureto 443 HTTPS, con los archivos del certificado generados anteriormente:

<VirtualHost *:443>
        ServerAdmin sbastian@telecable.com
        DocumentRoot /var/www/pruebas/
        ServerName example.tiraquelibras.com
        ErrorLog /var/log/httpd/pruebas-error.log
        CustomLog /var/log/httpd/pruebas.log combined
        <Directory /var/www/pruebas/>
             Order Deny,Allow
             Allow from All
        </Directory>
        SSLCertificateFile /etc/letsencrypt/live/example.tiraquelibras.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.tiraquelibras.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateChainFile /etc/letsencrypt/live/example.tiraquelibras.com/chain.pem
</VirtualHost>

Reiniciamos el servicio web:

sudo service httpd restart   # Para Centos 6
sudo systemctl restar httpd.service   # Para Centos 7

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:

# ./letsencrypt-auto certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: example.tiraquelibras.com
    Domains: example.tiraquelibras.com
    Expiry Date: 2019-05-27 14:39:17+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.tiraquelibras.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.tiraquelibras.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:

  • Tipo de instalación:
    • Framework de Apache.
    • Standalone.
    • Webroot. Este será nuestro caso.
  • El dominio dentro del listado de certificados instalados disponibles.
  • Si el servidor web es standalone 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.
[root@hunter letsencrypt]# ./letsencrypt-auto certonly -d example.tiraquelibras.com


Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Apache Web Server plugin (apache)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 3
Plugins selected: Authenticator webroot, Installer None
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/example.tiraquelibras.com.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):

 

Renovar y mantener archivos existentes

Escogeríamos la opción 1, Keep the existing certificate for now. Se generaría un nuevo directorio para los certificados obtenidos, manteniendo los existentes. Normalmente se nombra al nuevo directorio con el nombre del dominio acabado de una cadena de números, por ejemplo example.tiraquelibras.com-0001.

Podremos escoger qué archivos vamos a utilizar en el VirtualHost.

Renovar y sobreescribir archivos existentes

Escogeríamos la opción 2, Renew & replace the certNo se genera un directorio nuevo, sino que se actualizan en el directorio actual.

 

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:

# ./letsencrypt-auto renew

 

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.

Ejecución diaria a las 2:30 am, desde el usuario root:

$ crontab -e
30 2 * * * /usr/local/letsencrypt/letsencrypt-auto renew && /sbin/service httpd 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. Para ello usaremos la opción –dry-run.

En nuestro caso debemos de indicar el Document Root del certificado, al estar en modo Webroot.

# /usr/local/letsencrypt/letsencrypt-auto renew --webroot -w /var/www/pruebas --dry-run

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.tiraquelibras.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator webroot, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for example.tiraquelibras.com
Using the webroot path /var/www/pruebas for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Dry run: skipping deploy hook command: service httpd reload

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/example.tiraquelibras.com/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** 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/example.tiraquelibras.com/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í.

Con este comando podemos aprovechar a eliminarlo también, como veremos a continuación.

Recuerda indicar el path de tu certificado:

/usr/local/letsencrypt/letsencrypt-auto revoce --cert-path /etc/letsencrypt/live/example.tiraquelibras.com/fullchain.pem

Confirmamos el certificado a revocar, nos pregunta si queremos eliminarlo o solo revocarlo:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you like to delete the cert(s) you just revoked, along with all earlier
and later versions of the cert?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es (recommended)/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Deleted all files relating to certificate example.tiraquelibras.com.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully revoked the certificate that was located
at /etc/letsencrypt/live/example.tiraquelibras.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.

/usr/local/letsencrypt/letsencrypt-auto delete

Nos pregunta qué certificado queremos borrar, lo seleccionamos y quedaría eliminado:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Which certificate(s) would you like to delete?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.tiraquelibras.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Deleted all files relating to certificate example.tiraquelibras.com.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Quedaría eliminado:

# /usr/local/letsencrypt/letsencrypt-auto certificates

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No certs found.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

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 .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 httpd 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í.

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í.