freedns-txt – fajny dodatek do certbot’a z wildcard SSL cert z letsencrypt.org

O ile używasz freedns.42.pl i masz zamiar używać certyifikat wildcard CA cert z letsenrypt.org to opisywany przeze mnie skrypt może Ci się przydać.

Jakiś czas temu opublikowałem na na github’e autorski skrypt, który można w bardzo łatwy sposób użyć w połączeniu z certbot’em. Co prawda certbot, którego używam jest odpalany w docker’ze, ale to nie przeszkadza by to samo zrobić dla pakietu zainstalowanego na natywnym systemie operacyjnym.

Opis autorskiego pakietu został dołączony do kodu, ale zacytuję go także tutaj. Kod znajduje się pod adresem github.com/bibiak1/freedns-txt i należy go oczywiście pod siebie przygotować.

Po pierwsze dla swojej domeny musisz użyć ręcznej autentykacji jednocześnie wskazując na skrypt, który ma się zając resztą:

authenticator = manual
manual_auth_hook = /etc/letsencrypt/test

następnie przygotowujesz skrypt (u mnie dla docker’a) – w przykładzie /etc/letsencrypt/test:

apk update
apk add py3-urllib3 py3-lxml bind-tools
ln -s /usr/lib/python3.8/site-packages/lxml /usr/local/lib/python3.8/site-packages/

DNS1=fns1.42.pl
DNS2=fns2.42.pl
COUNT=100
SLEEP=60
OUTFILE=/etc/letsencrypt/test.out

echo "${CERTBOT_DOMAIN} _acme-challenge TXT ${CERTBOT_VALIDATION}" > ${OUTFILE}
python3 /etc/letsencrypt/freedns-txt.py -a -v "${CERTBOT_VALIDATION}" >> ${OUTFILE}
echo "start checking... (up to ${COUNT} * ${SLEEP}sec)" >> ${OUTFILE}
C=0; while [ ${C} -lt ${COUNT} -a -z "`host -t txt _acme-challenge.${CERTBOT_DOMAIN} ${DNS1} | grep ${CERTBOT_VALIDATION}`" -a -z "`host -t txt _acme-challenge.${CERTBOT_DOMAIN} ${DNS2} | grep ${CERTBOT_VALIDATION}`" ]; do echo -n ${C}... >> ${OUTFILE}; sleep ${SLEEP}; C=$(( C+1 )); done
echo >> ${OUTFILE}
(host -t txt _acme-challenge.${CERTBOT_DOMAIN} ${DNS1}; host -t txt _acme-challenge.${CERTBOT_DOMAIN} ${DNS2}) >> ${OUTFILE}
echo "sleeping 5 more minutes..." >> ${OUTFILE}
sleep 600
echo "script end" >> ${OUTFILE}

oczywiście należy także edytować sam skrypt freedns-update.py poprzez wprowadzenie danych swojego konta na freedns.42.pl, czyli:
– user – nazwa użytkownika na freedns.42.pl
– password – hasła na freedns.42.pl
– zone – nazwa domeny

Dodatkowo możesz ustawić:
– ttl

Reszty nie polecam zmieniać.

Ja docker’a odpalam tak:

docker run --network=host --rm -it -v `pwd`:/etc/letsencrypt -v /var/www:/var/www certbot/certbot renew

Powodzenia!!!