Let's Encrypt es una autoridad de certificación que emite certificados para los servidores web SSL y TLS de forma gratuita y cuenta con repositorios oficiales en distribuciones de software libre. La presente guía muestra las actividades a realizar para poder obtener un certificado digital “Let’s Encrypt”.

 

Guía de instalación en Debian 8 y servidor web Apache

Requisitos

  • Debian 8 (jessie)
  • Servidor Web Apache
  • Tener un nombre dominio
  • Firewall debe permitir https

 

1. Instalar cliente "Let's Encrypt" Certbot

Añadir el repositorio backports

$  echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list

Actualizar repositorios

$ sudo apt-get update

Instalar el paquete Certbot

$ sudo apt-get install python-certbot-apache -t jessie-backports

 

2. Configurar el nombre y alias del servidor apache

Ingresar al archivo por defecto "ApacheVirtual Host"

$ sudo nano /etc/apache2/sites-available/000-default.conf

Dentro del archivo de configuración de la aplicación configurar ServerName (ejemplo.gob.bo) y ServerAlias (www.ejemplo.gob.bo)

<VirtualHost *:80>
    ServerName ejemplo.gob.bo
    ServerAlias www.ejemplo.gob.bo
</VirtualHost>

Verificar errores:

$ sudo apache2ctl configtest
   Syntax OK (sin errores)

Reiniciar el servicio de apache

$ sudo systemctl restart apache2

 

3. Configurar certificado

Generar el certificado digital, y seleccionar el principal o vacio para seleccionar todos:

$ sudo certbot --apache
   Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: example.gob.bo
2: www.example.gob.bo
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Brindar la información solicitada y definir un correo electrónico para recuperación de llaves y recepción de noticias.

Configurar la opcion que permita que todas las solicitudes de http sean redireccionadas a https.

 

4. Verificar estado del certificado

Verificar los archivos generados del certificado

$ /etc/letsencrypt/live

Verificar el sitio web:

https://www.ssllabs.com/ssltest/analyze.html?d=ejemplo.gob.bo&latest

 

Vista del certificado

Certificado CGII

 

 

Guía de instalación en Debian 8 y servidor web Nginx

Requisitos

  • Debian 8 (jessie)
  • Servidor Web Nginx
  • Tener un nombre dominio
  • Firewall debe permitir https

 

1. Instalar cliente "Let's Encrypt" Certbot

Añadir el repositorio backports

$  sudo echo 'deb http://ftp.debian.org/debian jessie-backports main' >>  /etc/apt/sources.list.d/backports.list

Actualizar repositorios

$ sudo apt-get update

Instalar el cliente Certbot

$ sudo apt-get install certbot -t jessie-backports

 

2. Generar el certificado

Uso de la utilidad webroot donde se especifica el directorio con -w y el dominio con -d

$ sudo certbot certonly --webroot -w /var/www/ejemplo -d ejemplo.com -d www.ejemplo.com

Luego se le pedirá información como la dirección de correo electrónico, aceptar los términos y condiciones de servicio de Let's Encrypt.

Al finalizar debería ver el mensaje de generación satisfactoria del certificado que generará 4 archivos con extenxión .pem en el directorio /etc/letsencrypt/archive con enlaces simbólicos a /etc/letsencrypt/live/nombre_de_dominio

  • cert.pem: certificado del dominio
  • chain.pem: cadena del certificado de Let's Encrypt
  • fullchain.pem: combinación de cert.pem y chain.pem
  • privkey.pem: clave privada del certificado

$ sudo ls -l /etc/letsencrypt/live/nombre_de_dominio

 

3. Crear archivo de configuración para SSL/TLS

 

Crear el archivo de configuración para el sominio con SSL/TLS

$ sudo nano /etc/nginx/snippets/ssl-ejemplo.com.conf

Agregar la ubicación del certificado y clave privada

ssl_certificate /etc/letsencrypt/live/ejemplo.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ejemplo.com/privkey.pem;

Guardar la configuración.

4. Configurar SSL/TLS  en el sitio

A manera de ejemplo se usará el archivo de configuración por defecto "default" ubicado en /etc/nginx/sites-available/

$ sudo nano /etc/nginx/sites-available/default

Descomentar las líneas que hace referencia al puerto 443 y agregar el archivo de configuración anteriormente creado.

server {

    . . .

   server_name  ejemplo.com www.ejemplo.com

    # SSL configuration

    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    include snippets/ssl-ejemplo.com.conf;

    . . .

Cuargar la configuración y verificar que es correcta.

$ sudo nginx -t

La salida debería mostrar que la configuración es correcta

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reiniciar el servidor

$ sudo service nginx restart

5. Configurar la autorenovación del certificado

Los paquetes de Certbot vienen con un cron job que renovará sus certificados automáticamente antes de que caduquen. Como los certificados Let's Encrypt duran 90 días, es muy recomendable aprovechar esta característica. Puede probar la renovación automática de sus certificados ejecutando este comando:

$ sudo certbot renew --dry-run

Es recomendable agregar la tarea para la renovación autmática

$ sudo crontab -e

Seleccionar el editor de preferencia, por defecto es nano

30 2 * * * /usr/bin/certbot renew --dry-run

Guardar y salir, con esto el cron se ejecutará todos los días a las 2:30 am.