Проект Let’s Encrypt уже некотрое время назад начал выдавать WildCard-сертификаты. Настроим получение такого сретификата.
Получать сертификат будем на операционной системе FreeBSD программой Dehydrated, установленной по этой статье. Однако WildCard-сертификат не выдаётся при подтверждении по HTTP, а только способом проверки владения dns-сервером. Для выполнения этого условия настраиваем управление dns-сервером по другой статье.
Для работу необходим небольшой скрипт на bash, откуда-то нагугленный мною на просторах интернета и немного переделанный:
#!/usr/local/bin/bash
set -e
set -u
set -o pipefail
NSUPDATE="nsupdate -k /patch/to/your/dnsupdater.key"
# ip of your dns-server
DNSSERVER="888.888.888.888"
TTL=300
case "$1" in
"deploy_challenge")
printf "server %s\nupdate add _acme-challenge.%s. %d in TXT \"%s\"\nsend\n" "${DNSSERVER}" "${2}" "${TTL}" "${4}" | $NSUPDATE
;;
"clean_challenge")
printf "server %s\nupdate delete _acme-challenge.%s. %d in TXT \"%s\"\nsend\n" "${DNSSERVER}" "${2}" "${TTL}" "${4}" | $NSUPDATE
;;
esac
exit 0
Далее необходимо допиливание напильником файла /usr/local/etc/dehydrated/config. Были внесены следующие изменения:
# diff config.sample config
35a36
> CHALLENGETYPE="dns-01"
80c81
< #HOOK=
---
> HOOK="${BASEDIR}/dns-hook.sh"
83c84
< #HOOK_CHAIN="no"
---
> HOOK_CHAIN="deploy_challenge|clean_challenge"
#
Теперь пояснения:
- CHALLENGETYPE=»dns-01″ — указываем проверку владения доменом через dns;
- HOOK=»${BASEDIR}/dns-hook.sh» — указываем путь к скрипту, которые через nsupdate вносит необходимые для проверки в зону dns изменения;
- HOOK_CHAIN=»deploy_challenge|clean_challenge» — какие команды давать скрипту для внесения в зону (в данном случае — внести изменения и убрать изменения)
Итог, система готова к работае с WildCard-сертификатами.
