Page tree
Skip to end of metadata
Go to start of metadata

Einrichtung:

Scripts:

#!/bin/bash
USER= #description from pdns panel
ID= #What pdns admin  says
PASS= # you know that one ;)

# we get: CERTBOT_DOMAIN 
# CERTBOT_VALIDATION (key)
# CERTBOT_TOKEN (http only)
# CERTBOT_CERT_PATH (bla, same as CERTBOT_KEY_PATH and CERTBOT_SNI_DOMAIN

CREATE_DOMAIN="_acme-challenge.$CERTBOT_DOMAIN"

# alt: ID from pdns - -d id=$id \
curl -X GET -G https://$PATH/api/remote.php \
    -d action=updateRecord \
    -d desc=$USER \
    -d password=$PASS \
    -d domain=$CREATE_DOMAIN \
    -d content=$CERTBOT_VALIDATION \
    --trace-ascii -

COUNT=20
NEED=3
while [ $NEED -gt 0 ];do
	COUNT=$(( $COUNT -1 ))
	if [ $COUNT -lt 1 ];then
		echo "CHALLENGE FAILED - DNS NOT UP2DATE" 1>&2
		exit 1
	fi;
    NEED=3
    for I in 1 2 3;do
        dig +short -t TXT $CREATE_DOMAIN @ns$I.$DOM | grep $CERTBOT_VALIDATION  >/dev/null
        [ $? -eq 0 ] && NEED=$(( $NEED - 1 ))
    done
    sleep 1;
done

Renewal file:

[renewalparams]
authenticator = manual
pref_challs = dns-01,
installer = None

manual_auth_hook = /usr/sbin/dns.sh
manual_public_ip_logging_ok = true
renew_hook = /usr/sbin/renewposthook.sh
#optional, zB zum Certs verteilen, Services neu starten etc


pdns admin:

In der Records-Liste ein _acme-challenge.www.example.com anlegen - Typ: TXT. Kann leer sein, aber ein Leerzeichen ist notwendig

Speichern und ganz rechts auf den klicken; hier "Add Password",  eine Beschreibung und ein Kennwort eingeben.

Die Beschreibung ist im ersten Script unter ID= einzutragen, das Paßwort unter.. Paßwort.

Der erste Certbot-Aufruf ist dann:

certbot -a manual --preferred-challenge=dns-01 certonly --manual-auth-hook=/usr/sbin/dns.sh --manual-public-ip-logging-ok --renew-hook=/usr/sbin/renewposthook.sh -d <domain name>

danach sollte das Renew-File geprüft werden.


getestet mit certbot Version 0.10


  • No labels