Некоммерческий центр сертификации 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[code]
В конфиг апача необходимо прописывать именно ссылки, т.к. в данной папке при обновлении сертификатов будут имена файлов каждый раз другие, а ссылки будут указывать именно на последние сгенерированные сертификаты.