Проект 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-сертификатами.