TLSA semi-automatisch im PowerDNS hinterlegen

June 28, 2017 - Aiko Barz   DNSSEC, HTTPS, Let's encrypt, TLSA

Einfaches Beispiel:

 1 #!/bin/bash
 2 
 3 ZONE="torrentkino.de"
 4 FQHN="www.$ZONE"
 5 PREFIX="_443._tcp.www"
 6 TYPE="TLSA"
 7 METHOD="3 0 1"
 8 TTL="86400"
 9 
10 HASH=$(echo | openssl s_client -connect $FQHN:443 2>/dev/null | \
11   sed -n '/-BEGIN/,/-END/p' | \
12   openssl x509 -outform DER | \
13   sha256sum | cut -d' ' -f1)
14 
15 echo "sudo pdnsutil replace-rrset $ZONE $PREFIX $TYPE $TTL \"$METHOD $HASH\""
16 echo "sudo pdnsutil rectify-zone $ZONE"
17 echo "sudo pdnsutil increase-serial $ZONE"

Der Let’s encrypt Certbot beherrscht zudem Hooks, die beim Austausch eines Webserver-Zertifikats getriggert werden. Damit kann man das Spiel beliebig weiter spielen. Wer es noch komplizierter mag, kann auch mit der HTTP-API des PowerDNS-Servers sprechen. Das lässt sich sehr schön mit Perl, Go oder Foo realisieren.