Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Both sides previous revision Révision précédente
Prochaine révision
Révision précédente
si:acme-dns [2019/02/13 21:57]
pitchum [Certificat Wildcard avec dehydrated]
si:acme-dns [2022/02/13 19:32] (Version actuelle)
pitchum
Ligne 24: Ligne 24:
 ===== Configurer Bind pour les mises à jour dynamiques ===== ===== Configurer Bind pour les mises à jour dynamiques =====
  
-Techniquement il est possible de configurer directement la zone parinux.org pour accepter les changements dynamiques, avec la commande //​nsupdate//​ par exemple. Mais quand on active cette option alors Bind réorganise complètement le fichier zone à sa façon illisible. Et ça c'est pénible pour les adminsys. Et puis en plus ce fichier zone ne doit plus être éditer ​manuellement comme l'​indique la page //man nsupdate// :+Techniquement il est possible de configurer directement la zone parinux.org pour accepter les changements dynamiques, avec la commande //​nsupdate//​ par exemple. Mais quand on active cette option alors Bind réorganise complètement le fichier zone à sa façon illisible. Et ça c'est pénible pour les adminsys. Et puis en plus ce fichier zone ne doit plus être édité ​manuellement comme l'​indique la page //man nsupdate// :
  
 > Zones that are under dynamic control via nsupdate or a DHCP server should not be edited by hand. Manual edits could conflict with dynamic updates and cause data to be lost. > Zones that are under dynamic control via nsupdate or a DHCP server should not be edited by hand. Manual edits could conflict with dynamic updates and cause data to be lost.
Ligne 91: Ligne 91:
 sudo nsupdate -k /​etc/​bind/​rndc.key <<EOF sudo nsupdate -k /​etc/​bind/​rndc.key <<EOF
 server 127.0.0.1 server 127.0.0.1
-delete _acme-challenge.parinux.org+update ​delete _acme-challenge.parinux.org
 update add _acme-challenge.parinux.org 8000 IN TXT "​coucou tout va bieng ?" update add _acme-challenge.parinux.org 8000 IN TXT "​coucou tout va bieng ?"
 send send
Ligne 119: Ligne 119:
 Temporairement,​ le temps de tester la configuration on va utiliser le serveur ACME de staging. Temporairement,​ le temps de tester la configuration on va utiliser le serveur ACME de staging.
  
-<​code>​echo '​CA="​https://​acme-staging.api.letsencrypt.org/​directory"'​ | sudo tee /​etc/​dehydrated/​conf.d/​staging.sh</​code>​+<​code>​echo '​CA="​https://​acme-staging-v02.api.letsencrypt.org/​directory"'​ | sudo tee /​etc/​dehydrated/​conf.d/​staging.sh</​code>​
  
-On configure dehydrated pour faire de la validation DNS-01 dans le fichier ///​etc/​dehydrated/​conf.d/​auth-dns.conf// :+On configure dehydrated pour faire de la validation DNS-01 dans le fichier ///​etc/​dehydrated/​conf.d/​auth-dns.sh// :
  
-<​file>​+<​file ​/​etc/​dehydrated/​conf.d/​auth-dns.sh>
 CHALLENGETYPE="​dns-01"​ CHALLENGETYPE="​dns-01"​
 HOOK=/​etc/​dehydrated/​hook-custom.sh HOOK=/​etc/​dehydrated/​hook-custom.sh
Ligne 133: Ligne 133:
 #​!/​usr/​bin/​env bash #​!/​usr/​bin/​env bash
  
-set -e+set 
 set -u set -u
 set -o pipefail set -o pipefail
Ligne 149: Ligne 149:
         ;;         ;;
     "​deploy_cert"​)     "​deploy_cert"​)
-        # optional: +        # on concatène le certificat et la clef pour ejabberd. C'est pas obligatoire mais c'est plus simple. 
-        ​/path/to/deploy_cert.sh "​$@"​+        ​cat /var/lib/dehydrated/​certs/​parinux.org/​fullchain.pem /​var/​lib/​dehydrated/​certs/​parinux.org/​privkey.pem > /​etc/​ejabberd/​parinux.org.ejabberd.pem 
 +        sudo -u ejabberd ejabberdctl reload_config 
         ;;         ;;
     "​unchanged_cert"​)     "​unchanged_cert"​)
Ligne 189: Ligne 191:
 rm /​etc/​dehydrated/​conf.d/​staging.sh rm /​etc/​dehydrated/​conf.d/​staging.sh
 dehydrated --register --accept-terms dehydrated --register --accept-terms
-dehydrated -c+dehydrated -c --force # --force pour écraser le précédent certificat staging
 </​code>​ </​code>​
  
Ligne 203: Ligne 205:
  
 <​code>​chmod +x /​etc/​cron.weekly/​acme-renew</​code>​ <​code>​chmod +x /​etc/​cron.weekly/​acme-renew</​code>​
 +
 +===== Créer le certificat avec Certbot =====
 +
 +Cette méthode nécessite le plugin [[https://​certbot-dns-rfc2136.readthedocs.io/​en/​stable/​|certbot-dns-rfc2136]].
 +
 +Installer les paquets nécessaires :
 +
 +<​code>​
 +sudo apt install certbot python3-certbot-dns-rfc2136
 +</​code>​
 +
 +Définir les variables qui seront utilisées par la suite :
 +
 +<​code>​
 +export DOMAIN=mondomaine.net
 +export DNSSERVER=x.x.x.x
 +</​code>​
 +
 +Créer le fichier ///​etc/​letsencrypt/​nsupdate-credentials-${DOMAIN}.ini//​ :
 +
 +<​code>​
 +cat << EOF | sudo tee /​etc/​letsencrypt/​nsupdate-credentials-${DOMAIN}.ini
 +dns_rfc2136_server = ${DNSSERVER}
 +dns_rfc2136_port = 53
 +dns_rfc2136_name = rndc-acme-challenge.${DOMAIN}-key
 +dns_rfc2136_secret = xxxxxxxxxxxxxxxx
 +dns_rfc2136_algorithm = HMAC-SHA256
 +EOF
 +</​code>​
 +
 +Avec des permissions restreintes :
 +
 +<​code>​sudo chmod 600 /​etc/​letsencrypt/​nsupdate-credentials-${DOMAIN}.ini</​code>​
 +
 +Créer le script hook a exécuter après chaque renouvellement de certificat :
 +
 +<​code>​
 +cat << EOF | sudo tee /​etc/​letsencrypt/​renewal-hooks/​post/​reload-services.sh
 +#! /bin/sh
 +systemctl reload nginx
 +EOF
 +</​code>​
 +
 +Et le rendre exécutable :
 +
 +<​code>​sudo chmod u+x /​etc/​letsencrypt/​renewal-hooks/​post/​reload-services.sh</​code>​
 +
 +Puis lancer certbot certonly :
 +
 +<​code>​
 +certbot certonly \
 + ​--expand --non-interactive --agree-tos --email root@${DOMAIN} \
 + ​--dns-rfc2136 \
 + ​--dns-rfc2136-propagation-seconds 3 \
 + ​--dns-rfc2136-credentials /​etc/​letsencrypt/​nsupdate-credentials-${DOMAIN}.ini \
 + -d "​*.${DOMAIN}"​ -d ${DOMAIN} \
 + ​--post-hook /​etc/​letsencrypt/​renewal-hooks/​post/​reload-services.sh
 +</​code>​
 +
 
/var/lib/dokuwiki/data/attic/si/acme-dns.1550091439.txt.gz · Dernière modification: 2019/02/13 21:57 par pitchum
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki