Añadir cifrado HTTPS con certbot

Let's Encrypt permite configurar una Autoridad certificadora abierta, gratuita y automática a nuestra web. Al usar el protocolo https la comunicación entre cliente y servidor se cifra mediante clave pública y privada.

Con certbot habilita HTTPS en tu sitio web

1) Instalación en Ubuntu

$ sudo apt install certbot
$ sudo apt install python-certbot-apache

Si no funciona instalar mediante PPA:

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
$ sudo apt install python-certbot-apache

Ayuda certbot --help all

2) Añadir certificado a un dominio

sudo certbot --apache -d dominio.com

Ver el certificado instalado:
sudo certbot certificates

Certificate Name: dominio.com
    Domains: dominio.com
    Expiry Date: 2017-09-29 17:30:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/dominio.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/dominio.com/privkey.pem

3) Configurar apache.conf

Redireccionar de HTTP a HTTPS:

<VirtualHost _default_:80>
  ServerName  dominio.com
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

Configurar HTTPS:

<VirtualHost _default_:443>
  ServerAdmin admin@dominio.com
  ServerName  dominio.com
  DocumentRoot /home/user/webs/dominio.com
  <Directory   /home/user/webs/dominio.com>
    Options Includes
    AllowOverride All
    Require all granted
  </Directory>
  SSLEngine on
  SSLCertificateFile     /etc/letsencrypt/live/dominio.com/fullchain.pem
  SSLCertificateKeyFile  /etc/letsencrypt/live/dominio.com/privkey.pem
  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
  </Directory>
  BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
  BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

Reiniciar Apache: sudo service apache2 restart

4) Probar si funciona en el navegador web


Renovación del certificado

sudo certbot renew

El certificado dura 90 días. Hay que añadir al cron la orden certbot renew para que se vaya renovando automáticamente. Hay que probar de renovarlo 1 o 2 veces al día.

Editar cron: sudo crontab -e
Por ejemplo: Intentar renovar el certificado cada día a las 13:17
17 13 * * * /usr/bin/certbot renew --quiet

Listar cron: sudo crontab -l


Certificados y sus dominios

Listado: sudo certbot certificates

Certificate Name: certicado.com
Domains: dominio1.com, doninio2.org, dominio3.com, ....

Para borrar un dominio del certificado hay que crear un nuevo certificado omitiendo el dominio no deseado: sudo certbot certonly --apache --cert-name certicado.com -d dominio1.com -d dominio2.com

Comentarios

Proinf.net, ©2003-2019 ci 3.1.10 (CC) Esta obra está bajo una licencia de Creative Commons Este software está sujeto a la CC-GNU GPL