= Let's Encrypt
== info
* [[https://eff-certbot.readthedocs.io/en/stable/using.html|User Guide]]
* [[https://letsencrypt.org/getting-started/]]
* certbot
* instalación: [[https://certbot.eff.org/docs/install.html]]
* método manual: [[https://certbot.eff.org/docs/using.html#manual]]
* renovación:
* [[https://certbot.eff.org/docs/using.html#re-creating-and-updating-existing-certificates]]
* ? [[https://certbot.eff.org/docs/using.html#id19]]
* cli : [[https://certbot.eff.org/docs/using.html#certbot-command-line-options]]
* [[https://www.adictosaltrabajo.com/2016/07/21/obtencion-de-certificados-con-lets-encrypt/]]
== install
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update
sudo apt install certbot
+ info: [[https://eff-certbot.readthedocs.io/en/stable/install.html]]
== user guide
* [[https://eff-certbot.readthedocs.io/en/stable/using.html]]
* [[https://certbot.eff.org/]]
== standalone (no webserver)
sudo certbot certonly --standalone --agree-tos --email sammy@your_domain -d
sudo certbot renew [--dry-run]
# programaticamente si hay que parar servicios:
# --pre-hook "service haproxy stop" --post-hook "service haproxy start"
# dejará los certificados del dominio en /etc/letsencrypt/live//
obtener los certificados de Let's Encrypt:
curl -s https://letsencrypt.org/certs/{isrgrootx1.pem.txt,letsencryptauthorityx3.pem.txt} > ~/letsencrypt-combined-certs.pem
sudo cp ~/letsencrypt-combined-certs.pem /etc/letsencrypt/live/your_domain/
/via: [[https://certbot.eff.org/lets-encrypt/debianbuster-other]]\\
/via: [[https://certbot.eff.org/instructions]]
== webroot
sudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
sudo chown -R www-data:www-data /var/www/letsencrypt
ServerName xxx.org
DocumentRoot /var/xxx/html
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
AllowOverride None
Require all granted
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well-known [NC]
RewriteRule ^(.*)$ https://fidmag.org/ca/xxx.html [L,R=301]
sudo /usr/bin/certbot certonly --webroot -w /var/www/letsencrypt --agree-tos --email informatica@xxx.org -d xxx.org
== DNS challenge
Este método te exige poner una clave TXT en tu servidor DNS para certificar que puedes acceder a ese dominio:
sudo ./certbot-auto --manual --preferred-challenge dns certonly --email sammy@your_domain -d seedbox.torresegea.es
si todo está correcto, te genera 3 ficheros (''/etc/letsencrypt/live/''), que corresponden a las líneas de configuración de apache correspondientes:
* cert.pem -> SSLCertificateFile
* chain.pem -> SSLCertificateKeyFile
* privkey.pem -> SSLCACertificateFile
Existen otros métodos (explicados en documentación) para validar un dominio
La renovación implica usar un servicio DNS que permita actualizar los registros a través de una API o delegar en uno que sí lo permita: [[web:security:letsencrypt:dns]]
== comandos
* ''sudo ./certbot-auto --help all''
* ''sudo ./certbot-auto certificates'': listado de certicados
* ''sudo ./certbot-auto certonly -d '': renovación manual certificado
== ejemplos
{{topic>lets_encrypt}}