Notas sobre la instalación de certificado Let’s Encrypt
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:
- https://certbot.eff.org/#centosrhel7-nginx
- https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
- https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
- https://wiki.archlinux.org/index.php/Systemd/Timers
- https://wiki.archlinux.org/index.php/Let%E2%80%99s_Encrypt