Ateliers2020/LetsEncryptDNS

De Breizh-Entropy
Aller à la navigation Aller à la recherche
# Utilisateur dédié
useradd acme -g ssl-cert -m -s /bin/bash -r
su - acme
git clone https://github.com/acmesh-official/acme.sh

# Stockage
mkdir /etc/acme/
chmod 710 /etc/acme/
chown acme:ssl-cert /etc/acme/

# Lien avec bind
# https://github.com/acmesh-official/acme.sh/wiki/dnsapi#7-use-nsupdate-to-automatically-issue-cert
touch /etc/bind/acme.key
chown acme:bind /etc/bind/acme.key
chmod 640 /etc/bind/acme.key
b=$(dnssec-keygen -a hmac-sha512 -b 512 -n USER -K /tmp foo)
cat > /etc/bind/acme.key <<EOF
key "acme" {
    algorithm hmac-sha512;
    secret "$(awk '/^Key/{print $2}' /tmp/$b.private)";
};
EOF
rm -f /tmp/$b.{private,key}

# Conf bind
include "/etc/bind/acme.key";
zone "breizh-entropy.org" {
        type master;
        file "/etc/bind/master/breizh-entropy.org.db";
        allow-update { key "acme"; };
        ...
};
# Attention: prévoir un Negative TTL bas (60s) dans la zone car des
# entrées TXT _acme-challenge.xxx sont créées/supprimées rapidement

# Lien avec apache
cat <<EOF > /etc/sudoers.d/acme
acme    ALL = NOPASSWD: /usr/sbin/service apache2 force-reload
EOF

# Conf apache
SSLEngine on
SSLCertificateFile /etc/acme/*.breizh-entropy.org.cer
SSLCertificateKeyFile /etc/acme/*.breizh-entropy.org.key
SSLCertificateChainFile /etc/acme/fullchain.cer


# Installation initiale
rm -rf ~/.acme.sh/
NSUPDATE_SERVER="localhost" NSUPDATE_KEY="/etc/bind/acme.key" \
  /home/acme/acme.sh/acme.sh \
  --issue --dns dns_nsupdate -d breizh-entropy.org -d *.breizh-entropy.org -d jardin-entropique.eu.org -d www.jardin-entropique.eu.org --debug \
  --cert-file /etc/acme/*.breizh-entropy.org.cer --key-file /etc/acme/*.breizh-entropy.org.key --fullchain-file /etc/acme/fullchain.cer \
  --reloadcmd "sudo service apache2 force-reload" \
  --staging
# Note: paramètres sauvés dans ~/.acme.sh/breizh-entropy.org/breizh-entropy.org.conf
# (y compris reloadcmd en base64)

# Puis sans --staging.

# Test cron
~/acme.sh/acme.sh --cron --staging

# Cron (renouvellement tous les mois par défaut)
cat <<EOF > /etc/cron.d/acme
36 0 * * *      acme    /home/acme/.acme.sh/acme.sh --cron > /dev/null
EOF

# Maintenance
cd ~/acme.sh/
git pull