Dehydrated и Let’s Encrypt

Для Let’s Encrypt написано уже много разных утилит, автоматизирующих процесс получения сертификата. Одна из удобных — dehydrated. О её настройке и пойдёт речь ниже.

В CentOS dehydrated ставится из репозитория EPEL. Далее, нам нужно настроить его:

1. На сервере создаём директорию, необходимую для получения сертификата:

# mkdir -p /var/www/user/supersite.com/.well-known/acme-challenge
# chown -R user:user /var/www/user/supersite.com/.well-known

2. В конфигурационном файле dehydrated прописываем созданную директорию и указываем email:

WELLKNOWN="/var/www/user/supersite.com/.well-known/acme-challenge"
CONTACT_EMAIL="robot@sysadmin.pm"

3. В файле /etc/dehydrated/domains.txt прописываем наш домен и поддомены на нём:

supersite.com www.supersite.com secure.supersite.com

4. Запускаем утилиту:

# dehydrated -c

В случае успешного завершения операции, сертификат для домена будет доступен в директории /etc/dehydrated/certs/supersite.com/

Администратор имеет возможность выписывать сертификаты для нескольких доменов, но так как WELLKNOWN параметр можно указать только единожды, необходимо донастроить веб-сервер так, что бы запросы к .well-known/acme-challenge направлялись в директорию, указанную в WELLKNOWN.

В Nginx, например, для виртуального хоста можно прописать такой алиас:

location /.well-known/acme-challenge {
 alias /var/www/certs/.well-known/acme-challenge;
}

Для Apache, алиас в виртуальном хосте можно прописать вот так:

Alias /.well-known/acme-challenge/ /var/www/certs/.well-known/acme-challenge/

В зависимости от настроек апача, возможно потребуется дополнительно настроить разрешения:

<Directory "/var/www/certs/.well-known/acme-challenge/">
Options None 
AllowOverride None
ForceType text/plain
RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)" 
</Directory>

Соответственно в WELLKNOWN нужно будет прописать директорию /var/www/certs/.well-known/acme-challenge.

Кроме того, в файл /etc/dehydrated/domains.txt, каждый новый домен необходимо прописывать с новой строки:

supersite.com www.supersite.com secure.supersite.com
mydomain.com www.mydomain.com blog.mydomain.com

При выполнении команды dehydrated -c, утилита проверяет наличие сертификата, проверяет срок действия сертификата, и если до его истечения остаётся менее 30 дней, выписывает новый. Для автоматизации процесса, достаточно добавить эту команду в cron.

4 thoughts on “Dehydrated и Let’s Encrypt

  1. location /.well-known/acme-challenge {
    alias /var/www/certs/.well-known/acme-challenge;
    }
    ———-
    ты забыл указать, что это для Nginx, но не для Apache2 и тд и было бы круто, рассмотреть варианты других вебсерверов, не только Nginx или Apache2

    1. С ходу добавил пока что только Apache 🙂 Остальное добавлю позже, после прогона на тестовом сервере. По памяти для того же Lighttpd уже не напишу.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *