- Автор темы
- Администратор
- Модер.
- Команда форума
- #1
В рамках проекта dehydrated (https://github.com/lukas2511/dehydrated)
развивается shell-скрипт для автоматизации действий по получению
SSL-сертификатов в некоммерческом удостоверяющем центре Let's Encrypt
(https://letsencrypt.org/). Регистрация в сервисе, получение сертификата и его
последующее обновление предельно упрощено и требует только указания домена в
файле конфигурации, создания проверочного пути на сайте и запуска скрипта.
Пользователи RHEL/CentOS могут установить dehydrated из репозитория
EPEL:
Скрипт также присутствует в портах FreeBSD, в репозитории Fedora, Ubuntu и
многих других дистрибутивов Linux.
После установки прописываем домены, для которых необходим сертификат, в файле
/etc/dehydrated/domains.txt (можно определить несколько строк с разными
доменами для разных сертификатов):
В иерархии каталогов, в которых хранится контент example.com, создаём каталог
.well-known и подкаталог acme-challenge, в которых будет создан временный файл
для проверки наличия контроля за сайтом:
Указываем в файле конфигурации /etc/dehydrated/config каталоги и email для
связи, остальные параметры можно оставить по умолчанию:
Далее запускаем скрипт dehydrated с опцией "-с", которой достаточно для
большинства ситуаций. После первого запуска будет совершена регистрация в Let's
Encrypt, после чего будет инициирован процесс проверки путем генерации токена в
директории .well-known/acme-challenge с его последующим внешним запросом.
Если проверка прошла удачно, готовые сертификаты будут сохранены в каталог
/etc/dehydrated/certs/example.com, который можно указать в настройках сервера.
Например, в nginx:
В случае повторного запуска "dehydrated -c" будет выполнена проверка срока
действия сертификата и если до окончания его действия остаётся менее 30 дней
будет запрошено обновление. Для автоматизации поддержания сертификатов можно
добавить "dehydrated -c" в cron.
После обновления сертификата не забудьте перезапустить HTTP-сервер:
В случае необходимости получения сертификатов для нескольких доменов, следует
для всех сайтов позаботиться о пробросе проверочных запросов в каталог,
заданный в переменной WELLKNOWN (проверка осуществляется через запрос
http://example.com/.well-known/acme-challenge/m4g1C-t0k3n). Например, можно
добавить в конфигурацию хоста в nginx:
развивается shell-скрипт для автоматизации действий по получению
SSL-сертификатов в некоммерческом удостоверяющем центре Let's Encrypt
(https://letsencrypt.org/). Регистрация в сервисе, получение сертификата и его
последующее обновление предельно упрощено и требует только указания домена в
файле конфигурации, создания проверочного пути на сайте и запуска скрипта.
Пользователи RHEL/CentOS могут установить dehydrated из репозитория
EPEL:
Код:
yum install dehydrated
Скрипт также присутствует в портах FreeBSD, в репозитории Fedora, Ubuntu и
многих других дистрибутивов Linux.
После установки прописываем домены, для которых необходим сертификат, в файле
/etc/dehydrated/domains.txt (можно определить несколько строк с разными
доменами для разных сертификатов):
Код:
example.com www.example.com
example2.com www.example2.com test.example2.com
В иерархии каталогов, в которых хранится контент example.com, создаём каталог
.well-known и подкаталог acme-challenge, в которых будет создан временный файл
для проверки наличия контроля за сайтом:
Код:
mkdir /var/www/htdocs/.well-known
mkdir /var/www/htdocs/.well-known/acme-challenge
Указываем в файле конфигурации /etc/dehydrated/config каталоги и email для
связи, остальные параметры можно оставить по умолчанию:
Код:
WELLKNOWN="/var/www/htdocs/.well-known/acme-challenge"
CONTACT_EMAIL="[email protected]"
Далее запускаем скрипт dehydrated с опцией "-с", которой достаточно для
большинства ситуаций. После первого запуска будет совершена регистрация в Let's
Encrypt, после чего будет инициирован процесс проверки путем генерации токена в
директории .well-known/acme-challenge с его последующим внешним запросом.
Код:
dehydrated -c
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
Processing example.com with alternative names: www.example.com
+ Signing domains...
+ Creating new directory /etc/dehydrated/certs/example.com ...
+ Generating private key...
+ Generating signing request...
+ Requesting challenge for example.com...
Если проверка прошла удачно, готовые сертификаты будут сохранены в каталог
/etc/dehydrated/certs/example.com, который можно указать в настройках сервера.
Например, в nginx:
Код:
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/dehydrated/certs/example.com/fullchain.pem;
ssl_certificate_key /etc/dehydrated/certs/example.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparams.pem; # генерируется через "openssl dhparam -dsaparam -out /etc/nginx/ssl/dhparams.pem 2048"
В случае повторного запуска "dehydrated -c" будет выполнена проверка срока
действия сертификата и если до окончания его действия остаётся менее 30 дней
будет запрошено обновление. Для автоматизации поддержания сертификатов можно
добавить "dehydrated -c" в cron.
Код:
dehydrated -c
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
Processing example.com with alternative names: www.example.com
+ Checking domain name(s) of existing cert... unchanged.
+ Checking expire date of existing cert...
+ Valid till Sep 11 03:53:00 2017 GMT (Longer than 30 days). Skipping renew!
После обновления сертификата не забудьте перезапустить HTTP-сервер:
Код:
systemctl restart nginx
В случае необходимости получения сертификатов для нескольких доменов, следует
для всех сайтов позаботиться о пробросе проверочных запросов в каталог,
заданный в переменной WELLKNOWN (проверка осуществляется через запрос
http://example.com/.well-known/acme-challenge/m4g1C-t0k3n). Например, можно
добавить в конфигурацию хоста в nginx:
Код:
location /.well-known/acme-challenge {
alias /var/www/htdocs/.well-known/acme-challenge;
}