Dehydrated - клиент для подписания сертификатов на ACME-сервере (например, Let's Encrypt). Этот клиент поддерживает как ACME v1, так и новую версию ACME v2, включая поддержку сертификатов с подстановочными знаками.
curl -Lo /usr/local/bin/dehydrated https://raw.githubusercontent.com/dehydrated-io/dehydrated/master/dehydrated
chmod +x /usr/local/bin/dehydrated
Конфигурация должна быть восстановлена из резервной копии на /etc/dehydrated
или можно создать новую конфигурацию.
Создайте каталог для конфигурации и сертификатов:
mkdir /etc/dehydrated
Создание нового конфигурационного файла /etc/dehydrated/config
:
CA="letsencrypt"
CHALLENGETYPE="http-01"
WELLKNOWN="/opt/www/.well-known/acme-challenge"
CONTACT_EMAIL="[email protected]"
Вы можете использовать следующие центры сертификации:
Создание файла списка доменов /etc/dehydrated/domains.txt
:
example.com www.example.com
Зарегистрируйте свой аккаунт (только для новой конфигурации!):
dehydrated --register --accept-terms
Web-сервер должен работать на порту 80 и обслуживать каталог /opt/www
. Вы можете использовать любой другой каталог, но не забудьте изменить порт в конфигурации dehydrated.
Если у вас нет веб-сервера, то можно запустить временный веб-сервер:
mkdir -p /opt/www/.well-known/acme-challenge
python3 -m http.server -d /opt/www 80
Для создания сертификата запустите следующую команду:
dehydrated -c
Для автоматического обновления сертификата создайте сценарий для ежедневного задания cron /etc/cron.daily/dehydrated.sh
. В этом сценарии напишите:
#!/bin/sh
dehydrated -c
Затем установите разрешение на выполнение:
chmod +x /etc/cron.daily/dehydrated.sh
Сертификат будет автоматически обновляться, когда до окончания срока действия останется 30 дней.
/etc/dehydrated/certs/example.com/fullchain.pem
/etc/dehydrated/certs/example.com/privkey.pem
Например, конфигурация nginx в /etc/nginx/conf.d/01-ssl.conf
:
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
root /opt/www;
ssl_certificate /etc/dehydrated/certs/example.com/fullchain.pem;
ssl_certificate_key /etc/dehydrated/certs/example.com/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES256;
ssl_prefer_server_ciphers on;
location / {
return 200 'ok';
}
}