ACHTUNG NOCH IM AUFBAU
Noch als Azubi im Jahre 2010 hatte ich den Auftrag bekommen einen günstigen und guten Anbieter für Domains zu suchen. Ich bin bei Domain-Offensive gelandet, mittlerweile habe ich selbst mehrere Domains dort.
Da ich zig Sub-Domains im Einsatz habe (Stichwort „name-based virtual hosts“) bin ich irgendwann auf Wildcards Zertifikate gewechselt. Diese benutze ich sowohl für meine Webserver, als auch für meinen eMail-Server.
Domain-Offensive bietet mittlerweile selbst eine API für LetsEncrypt an.
Doku: https://www.do.de/wiki/LetsEncrypt_-_Entwickler
Ich habe hierfür simple Bash-Scripte erstellt, mit welchen man – über die API – Wildcard-Zertifikate anlegen und aktualisieren kann. Der Trick hierbei ist, dass temporäre _acme-challenge.* DNS-Einträge erstellt werden.
Certbot installieren
Ich möchte hier nicht im Detail auf die Installation von Certbot eingehen, nur der Tipp am Rande, das eine aktuelle Version von Certbot benötigt wird. Ganz alte Versionen unterstützen noch keine Wildcard Zertifikate
Zum Zeitpunkt des Artikels setze ich Certbot 1.8.0 aus dem sid-Repo ein.
DomainOffensive-API-Key
Zuerst erstellen wir einen API-Key, Details siehe API-Doku.
https://www.do.de/account/letsencrypt/
Der API-Key gilt pro Account, nicht pro Domain!
Anlegen der Ordner+Scripte
Hier kommt nun mein customizing…
## Ordnerstruktur anlegen
mkdir -p /opt/letsencrypt/{hooks,logs,scripts}
/opt/letsencrypt/scripts/new_domain.sh
#!/bin/bash
## Script für neue Domains
for domain in "$@"
do
echo $DOMAINS
[ -n "${DOMAINS}" ] && DOMAINS="${DOMAINS},"
DOMAINS="${DOMAINS}${domain}"
done
[ -z ${DOMAINS} ] && { echo "No domain given"; exit 1; }
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns --manual-auth-hook "/opt/letsencrypt/hooks/authenticator.sh" --manual-cleanup-hook "/opt/letsencrypt/hooks/cleanup.sh" -d "${DOMAINS}"
/opt/letsencrypt/hooks/authenticator.sh
#!/bin/bash
## https://certbot.eff.org/docs/using.html
## Token from do.de
APITOKEN="<YourDOApiTokenHere>"
DOMAIN="_acme-challenge.$CERTBOT_DOMAIN"
echo "$(date +'%Y-%m-%d %T') curl-XPUT \"https://www.do.de/api/letsencrypt?token=${APITEKEN}&domain=${DOMAIN}&value=${CERTBOT_VALIDATION}"\" >> /opt/letsencrypt/logs/hook_authenticator.log
curl -XPUT "https://www.do.de/api/letsencrypt?token=${APITOKEN}&domain=${DOMAIN}&value=${CERTBOT_VALIDATION}" >> /opt/letsencrypt/logs/hook_authenticator.log 2>&1
/opt/letsencrypt/hooks/cleanup.sh
#!/bin/bash
## https://certbot.eff.org/docs/using.html
## Token from do.de
APITOKEN="<YourDOApiTokenHere>"
DOMAIN="_acme-challenge.${CERTBOT_DOMAIN}"
curl -XPUT "https://www.do.de/api/letsencrypt?token=${APITOKEN}&domain=${DOMAIN}&action=delete"
0 Kommentare.