| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
| web:security:letsencrypt:wildcard [09/06/2026 19:00] – [cli] mate | web:security:letsencrypt:wildcard [24/07/2026 15:01] (actual) – [renovación autmatizada auth.acme-dns.io] mate |
|---|
| 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> | 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> | * 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> |
| * <code bash># execució manual | * 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 |
| sudo certbot certonly --manual \ | |
| --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py \ | |
| --preferred-challenges dns \ | |
| --debug-challenges \ | |
| -d "fidmag.org" \ | |
| -d "*.fidmag.org" | |
| | |
| [[ $? -eq 0 ]] && { | |
| echo "Renovación exitosa." | |
| } | |
| </code> | </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> |
| | |
| |
| == cli | |
| <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> | |