Сертификаты для сайта средствами dehydrated на FreeBSD

Некоммерческий центр сертификации Let's Encrypt начал выдавать сертификаты всем желающим ещё в первой половине 2016 года. Соответсвенно данный процесс необходимо автоматизировать. Будем получать сертификаты через проверку вледения доменом через http.

Для автоматического получения сертификатов установим из портов Dehydrated.

# cd /usr/ports/security/dehydrated/
# make install clean

Опции я отставил по-умолчанию.

Нам нужна автоматизация, поэтому по совету сообщения после установки порта добавим в /etc/periodic.conf следующие строки:

weekly_dehydrated_enable="YES"
weekly_dehydrated_deployscript="/usr/local/etc/dehydrated/deploy.sh"
weekly_dehydrated_flags="-g"

Скрипт /usr/local/etc/dehydrated/deploy.sh запуститься после получения сертификатов, например, можно перезапустить апач для применения нового сертификата.

Запрос будет производиться каждую субботу.

Настраиваем саму прогу. Сперва нужно добавить список доменов-хостов, для которых будут создаваться сертификаты.

# cd /usr/local/etc/dehydrated
# mcedit domains.txt

К примеру там будет такое содержимое:

host1.domain.com
host2.domain.com
www.domain.com

Файл /usr/local/etc/dehydrate/config можно оставить по-умолчанию, но я вместо используемого по-умолчанию и закоментированного параметра #RENEW_DAYS="30" установил RENEW_DAYS="7". Данный параметр проверяет дату устаревания сертификата. Если он менее 7 дней — то обновит сертификат, если больше — то ничего делать не будет. А так как сертификаты выдаются на 3 месяца — то неделя до истечения — вполне нормальный срок.

Теперь необходимо подправить конфиг Апача:

$ more /usr/local/etc/apache24/httpd.conf
...
alias /.well-known/acme-challenge /usr/local/www/dehydrated
<Directory "/usr/local/www/dehydrated">
        Options none
        AllowOverride None
        Require all granted
</Directory>
...

Необходимо перезапустить апач для применения изменений. Либо service apache24 restart, либо apachectl -k graceful в зависимости от предпочтений.

Чтобы не дожидаться субботы необходимо выполнить dehydrated -с. Если всё настроено правильно, то в папке /usr/local/etc/dehydrated/certs появятся подкаталоги по названию хостов в фале domains.txt

$ cd /usr/local/etc/dehydrated/certs
$ ls
host1.domain.com     host2.domain.com       www.domain.com

Если зайти в папку — то там будет следующее содержимое:

-rw-------  1 root  wheel  1655 21 апр.  04:20 cert-1524273614.csr
-rw-------  1 root  wheel     0 21 апр.  04:20 cert-1524273614.pem
-rw-------  1 root  wheel  1655 22 апр.  09:33 cert-1524378821.csr
-rw-------  1 root  wheel  2500 22 апр.  09:33 cert-1524378821.pem
lrwx------  1 root  wheel    19 22 апр.  09:33 cert.csr -> cert-1524378821.csr
lrwx------  1 root  wheel    19 22 апр.  09:33 cert.pem -> cert-1524378821.pem
-rw-------  1 root  wheel  1648 22 апр.  09:33 chain-1524378821.pem
lrwx------  1 root  wheel    20 22 апр.  09:33 chain.pem -> chain-1524378821.pem
-rw-------  1 root  wheel  4148 22 апр.  09:33 fullchain-1524378821.pem
lrwx------  1 root  wheel    24 22 апр.  09:33 fullchain.pem -> fullchain-1524378821.pem
-rw-------  1 root  wheel  3243 21 апр.  04:20 privkey-1524273614.pem
-rw-------  1 root  wheel  3247 22 апр.  09:33 privkey-1524378821.pem
lrwx------  1 root  wheel    22 22 апр.  09:33 privkey.pem -> privkey-1524378821.pem

В конфиг апача необходимо прописывать именно ссылки, т.к. в данной папке при обновлении сертификатов будут имена файлов каждый раз другие, а ссылки будут указывать именно на последние сгенерированные сертификаты.

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