| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
| web:security:letsencrypt:wildcard [29/12/2025 12:56] – [info] mate | web:security:letsencrypt:wildcard [24/07/2026 15:01] (actual) – [renovación autmatizada auth.acme-dns.io] mate |
|---|
| = Let's Encrypt wildcard | = Let's Encrypt wildcard |
| | {{tag>lets_encrypt}} |
| == info | == info |
| * [[https://www.jesusamieiro.com/generar-un-certificado-ssl-wildcard-con-lets-encrypt/]] | * [[https://www.jesusamieiro.com/generar-un-certificado-ssl-wildcard-con-lets-encrypt/]] |
| * [[https://github.com/BradJonesLLC/docker-haproxy-letsencrypt]] | * [[https://github.com/BradJonesLLC/docker-haproxy-letsencrypt]] |
| |
| == cli | == renovación autmatizada auth.acme-dns.io |
| <code bash>sudo certbot certonly --manual --preferred-challenges=dns --email informatica@fidmag.org --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.fidmag.org</code> | * primera vegada:<code bash>sudo curl -o /etc/letsencrypt/acme-dns-auth.py https://raw.githubusercontent.com/joohoi/acme-dns-certbot-joohoi/master/acme-dns-auth.py |
| | sudo chmod +x /etc/letsencrypt/acme-dns-auth.py |
| | sudo certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d "*.fidmag.org" -d "fidmag.org"</code> |
| | * creat registre CNAME:<code>_acme-challenge.fidmag.org CNAME 1569f935-7bf3-4630-9c3d-5846ad7c956e.auth.acme-dns.io.</code><code bash>dig _acme-challenge.fidmag.org CNAME +short</code> |
| | * renovacions per cron<code bash>0 7,19 * * * certbot renew --quiet --deploy-hook "/home/fidmag/certbot/renew-dns.sh" > /home/fidmag/certbot/last_exec 2>&1 |
| | </code> |
| | * simulacro: <code bash>certbot renew --dry-run</code> |
| | * comprobar fichero configuración renovación:<code ini /etc/letsencrypt/renewal/fidmag.org.conf># Options used in the renewal process |
| | [renewalparams] |
| | account = *** |
| | pref_challs = dns-01, |
| | authenticator = manual |
| | server = https://acme-v02.api.letsencrypt.org/directory |
| | key_type = ecdsa |
| | manual_auth_hook = /etc/letsencrypt/acme-dns-auth.py |
| | </code> |
| | * Let's encrypt recomienda comprobar 2 veces al día (Gemini dixit) |
| | * ''%%--%%deploy-hook'': script a ejecutar si la renovación es exitosa |
| | * <code bash certificats.config># configuració |
| | #declare -a CERTIFICATS=("matebcn.eu" "fruitsmontmany.es" "estellar.cat") |
| | declare -a CERTIFICATS=($(basename -s .conf /etc/letsencrypt/renewal/*.conf))</code><code bash>#!/usr/bin/env bash |
| | |
| | SCRIPT_SOURCE=`dirname "$0"` |
| | source ${SCRIPT_SOURCE}/certificats.config |
| | |
| | for cert "${CERTIFICATS[@]}"; do |
| | if [[ -f /home/mate/webservices/certs/${cert}.pem ]]; then |
| | sudo cp -f /home/mate/webservices/certs/${cert}.pem /home/mate/webservices/certs/old/${cert}.pem.old |
| | fi |
| | |
| | if [[ -f /home/mate/webservices/certs/${cert}.pem.key ]]; then |
| | sudo cp -f /home/mate/webservices/certs/${cert}.pem.key /home/mate/webservices/certs/old/${cert}.pem.key.old |
| | fi |
| | |
| | sudo cp -f /etc/letsencrypt/live/${cert}/fullchain.pem /home/mate/webservices/certs/${cert}.pem && \ |
| | sudo cp -f /etc/letsencrypt/live/${cert}/privkey.pem /home/mate/webservices/certs/${cert}.pem.key && \ |
| | sudo chmod +r /home/mate/webservices/certs/* && \ |
| | |
| | docker compose -f /home/mate/webservices/docker-compose.yml restart haproxy-proxy |
| | |
| | done</code> |
| | |