Получение WildCard сертификата от Let's Encrypt

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

Добавить комментарий