Notas sobre la instalación de certificado Let’s Encrypt

Written by Miguel González on 2016-10-29

Este artículo es una continuación del anterior sobre configurar un servidor web estático.

Obtener certificado con certbot

Como ya está instalado el repositorio EPEL, sólo hay que instalar la utilidad certbot.

$ sudo yum install certbot

Para crear los certificados:

$ sudo certbot certonly --webroot -w /srv/www.migonzalvar.eu/ -d migonzalvar.eu -d www.migonzalvar.eu

Esto funciona porque el servidor está ejecutándose y es accesible. certbot crea unos archivos en el raíz del sitio y Let's Encrypt los comprueba.

Podemos ahora confirmar que está todo bien simulando una actualización:

$ sudo certbot renew --dry-run

Un paso más, para incrementar la seguridad y evitar el ataque Logjam cramos una clave fuerte Diffie-Hellman.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Configuración de nginx

server {
    listen      80;
    server_name migonzalvar.eu www.migonzalvar.eu;
    return 301  https://$server_name$request_uri;
}

server {
    listen              443 ssl;
    server_name         migonzalvar.eu www.migonzalvar.eu;
    ssl_certificate     /etc/letsencrypt/live/migonzalvar.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/migonzalvar.eu/privkey.pem;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    location / {
        root /srv/www.migonzalvar.eu/;
    }
}

Testamos la configuración recién creada:

$ sudo nginx -t

Y añádimos regla al firewall:

$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

Renovación automática del certificado

Crear /etc/systemd/system/certbot-renew.service:

[Unit]
Description=Let's Encrypt renewal

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --agree-tos
ExecStartPost=/bin/systemctl reload nginx.service

Y el mismo archivo pero acabado en .timer, es decir /etc/systemd/system/certbot-renew.timer:

[Unit]
Description=Daily renewal of Let's Encrypt's certificates

[Timer]
OnCalendar=daily
RandomizedDelaySec=1day
Persistent=true

[Install]
WantedBy=timers.target

POr último lo iniciamos y lo dejamos activo.

$ sudo systemctl start certbot-renew.timer
$ sudo systemctl enable certbot-renew.timer
$ systemctl list-timers

Referencias:

Links

Social