Все уже, наверное, в курсе про такую организацию как Let’s Encrypt. С некоторых пор там можно получить и wildcard сертификат. В этой короткой заметке я опишу пару не очень очевидных моментов, с которыми столкнулся.
1. Wildcard сертификат можно получить только через DNS plugins:
Подробнее здесь.
Использование DNS plugins подробно описано в документации по ссылке выше.
При использовании режима manual, нужно будет вручную добавить TXT запись в DNS. Эта запись каждый раз будет разная, т.е. автоматическое продление сертификата в этом случае возможно только через хуки certbot. Там же, кстати, можно повесить и команду, например, на рестарт nginx.
2. Нужно использовать сервер с API v.2:
Вероятно в будущих версиях certbot произойдет переход на использование API v.2 по умолчанию, но пока вот так.
Я использую docker для запуска certbot. Весьма удобно. Таким образом, команда для получения сертификата получается вот такая:
Результаты работы certbot будут доступны в /docker/volumes/, откуда их можно подключать в другие контейнеры.
Обратите внимание на ключ «manual-public-ip-logging-ok» — если его не указать, то появляется вот такой вопрос при запуске:
1. Wildcard сертификат можно получить только через DNS plugins:
Doing domain validation in this way is the only way to obtain wildcard certificates from Let’s Encrypt.Т.е. наши варианты — это либо один из DNS plugins, либо manual + preferred-challenges=dns-01.
Подробнее здесь.
Использование DNS plugins подробно описано в документации по ссылке выше.
При использовании режима manual, нужно будет вручную добавить TXT запись в DNS. Эта запись каждый раз будет разная, т.е. автоматическое продление сертификата в этом случае возможно только через хуки certbot. Там же, кстати, можно повесить и команду, например, на рестарт nginx.
2. Нужно использовать сервер с API v.2:
https://acme-v02.api.letsencrypt.org/directory
Вероятно в будущих версиях certbot произойдет переход на использование API v.2 по умолчанию, но пока вот так.
Я использую docker для запуска certbot. Весьма удобно. Таким образом, команда для получения сертификата получается вот такая:
docker run -it --rm \
-v /docker/volumes/etc/letsencrypt:/etc/letsencrypt \
-v /docker/volumes/var/lib/letsencrypt:/var/lib/letsencrypt \
-v /docker/volumes/var/log/letsencrypt:/var/log/letsencrypt \
certbot/certbot \
certonly --manual \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory \
--register-unsafely-without-email --agree-tos \
--manual-public-ip-logging-ok \
-d example.com -d *.example.com
Результаты работы certbot будут доступны в /docker/volumes/, откуда их можно подключать в другие контейнеры.
Обратите внимание на ключ «manual-public-ip-logging-ok» — если его не указать, то появляется вот такой вопрос при запуске:
NOTE: The IP of this machine will be publicly logged as having requested thisКак я понял, пока адреса нигде не доступны (но логируются), их публикация есть в ближайших планах. На мой личный взгляд, немного странная политика.
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.
Are you OK with your IP being logged?