LetsEncrypt: различия между версиями
Нет описания правки |
Нет описания правки |
||
(не показано 10 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
Использовать [https://letsencrypt.org/ Let's Encrypt] очень просто. | Использовать [https://letsencrypt.org/ Let's Encrypt] очень просто. | ||
# apt-get install | # apt-get install certbot | ||
( | (Пакет доступен для ALT Linux p8, p9 и Сизифа) | ||
С работающим веб-сервером можно запустить примерно так: | С работающим веб-сервером можно запустить примерно так: | ||
# | # certbot certonly --webroot -w$DIR -d $DOMAIN | ||
указав каталог сайта DIR и домен. Главное, что должно получиться у letsencrypt — это создать файлы в каталоге сайта, к которым сможет обратиться проверяющий сервер, который пойдёт по указанному домену. То есть проверить, что вы действительно имеете доступ к управлению сайтом. | указав каталог сайта DIR и домен. Главное, что должно получиться у letsencrypt — это создать файлы в каталоге сайта {{path|/.well-known}}, к которым сможет обратиться проверяющий сервер, который пойдёт по указанному домену. То есть проверить, что вы действительно имеете доступ к управлению сайтом. | ||
Дальше в веб-сервере надо указать полученный для домена сертификат и закрытый ключ сервера. Пример для nginx: | Дальше в веб-сервере надо указать полученный для домена сертификат и закрытый ключ сервера. Пример для nginx: | ||
ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem; | ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem; | ||
ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem; | ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem; | ||
ssl_trusted_certificate /etc/letsencrypt/live/example.ru/chain.pem; | |||
Для периодического обновления сертификата можно добавить в cron.weekly: | |||
Для периодического обновления сертификата | |||
<source lang="bash"> | <source lang="bash"> | ||
# cat /etc/cron.weekly/letsencrypt | # cat /etc/cron.weekly/letsencrypt | ||
#!/bin/sh | #!/bin/sh | ||
/usr/bin/certbot -q renew | |||
</source> | </source> | ||
Фактическое обновление произойдёт только за месяц до окончания срока действия сертификата. | Фактическое обновление произойдёт только за месяц до окончания срока действия сертификата. | ||
=== Для Apache2 === | |||
Если в настройках виртуального хоста по умолчанию для сервиса httpd2 настроены редиректы с http на https (как, например, в дистрибутивах «АЛЬТ Образование»), можно использовать возврат к предоставлению информации по HTTP с использованием скрипта, который должен выполнять следующие действия. | |||
* Убирать редиректы с HTTP на HTTPS в нужном конфигурационном файле виртуального хоста. | |||
* Проверять корректность синтаксиса конфигурационного файла виртуального хоста. | |||
* Запрашивать выдачу нового SSL. | |||
* Восстанавливать убранные редиректы. | |||
* Перезапускать сервис httpd2 для «подхвата» обновленных сертификатов. | |||
Пример скрипта: | |||
<pre> | |||
#!/bin/bash | |||
#Убираем редиректы | |||
sed -i "/^Rewrite/d" "/etc/httpd2/conf/sites-enabled/000-default.conf" | |||
#Проверяем синтаксис и логируем результат | |||
httpd2 -t 2> /root/script_tmp/certbot_httpd2.log | |||
#Перечитываем конфигурационные файлы сервиса httpd2 и логируем результат | |||
systemctl reload httpd2 2>> /root/script_tmp/certbot_httpd2.log | |||
#Запрашиваем новый SSL и логируем результат | |||
/usr/bin/certbot -q renew 2>> /root/script_tmp/certbot_httpd2.log | |||
#Удаляем завершающую часть конфигурационного файлы чтобы легче было добавить редиректы | |||
sed -i "/^<\/VirtualHost>/d" "/etc/httpd2/conf/sites-enabled/000-default.conf" | |||
#Добавляем новые редиректы и завершение конфигурационного файла | |||
echo "RewriteEngine On" >> /etc/httpd2/conf/sites-enabled/000-default.conf | |||
echo "RewriteCond %{HTTPS} !=on" >> /etc/httpd2/conf/sites-enabled/000-default.conf | |||
echo "RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L]" >> | |||
/etc/httpd2/conf/sites-enabled/000-default.conf | |||
echo "</VirtualHost>" >> /etc/httpd2/conf/sites-enabled/000-default.conf | |||
#Логируем внесенные изменения | |||
tail -n8 /etc/httpd2/conf/sites-enabled/000-default.conf >> /root/script_tmp/certbot_httpd2.log | |||
#Перезапускаем сервис | |||
systemctl restart httpd2 2>> /root/script_tmp/certbot_httpd2.log | |||
</pre> | |||
Такой скрипт можно добавить в планировщик задач, чтобы своевременно обновлять сертификат сайта. | |||
== Ссылки == | == Ссылки == | ||
* https://habrahabr.ru/post/279695/ | * https://habrahabr.ru/post/279695/ | ||
* https://habrahabr.ru/post/318952/ | |||
* http://letsencrypt.readthedocs.org/en/latest/using.html | * http://letsencrypt.readthedocs.org/en/latest/using.html | ||
* https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04 | * https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04 | ||
{{Category navigation|title=Администрирование|category=Администрирование|sortkey=*}} | |||
Текущая версия от 15:47, 13 июня 2021
Использовать Let's Encrypt очень просто.
# apt-get install certbot
(Пакет доступен для ALT Linux p8, p9 и Сизифа)
С работающим веб-сервером можно запустить примерно так:
# certbot certonly --webroot -w$DIR -d $DOMAIN
указав каталог сайта DIR и домен. Главное, что должно получиться у letsencrypt — это создать файлы в каталоге сайта /.well-known, к которым сможет обратиться проверяющий сервер, который пойдёт по указанному домену. То есть проверить, что вы действительно имеете доступ к управлению сайтом.
Дальше в веб-сервере надо указать полученный для домена сертификат и закрытый ключ сервера. Пример для nginx:
ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.ru/chain.pem;
Для периодического обновления сертификата можно добавить в cron.weekly:
# cat /etc/cron.weekly/letsencrypt
#!/bin/sh
/usr/bin/certbot -q renew
Фактическое обновление произойдёт только за месяц до окончания срока действия сертификата.
Для Apache2
Если в настройках виртуального хоста по умолчанию для сервиса httpd2 настроены редиректы с http на https (как, например, в дистрибутивах «АЛЬТ Образование»), можно использовать возврат к предоставлению информации по HTTP с использованием скрипта, который должен выполнять следующие действия.
- Убирать редиректы с HTTP на HTTPS в нужном конфигурационном файле виртуального хоста.
- Проверять корректность синтаксиса конфигурационного файла виртуального хоста.
- Запрашивать выдачу нового SSL.
- Восстанавливать убранные редиректы.
- Перезапускать сервис httpd2 для «подхвата» обновленных сертификатов.
Пример скрипта:
#!/bin/bash #Убираем редиректы sed -i "/^Rewrite/d" "/etc/httpd2/conf/sites-enabled/000-default.conf" #Проверяем синтаксис и логируем результат httpd2 -t 2> /root/script_tmp/certbot_httpd2.log #Перечитываем конфигурационные файлы сервиса httpd2 и логируем результат systemctl reload httpd2 2>> /root/script_tmp/certbot_httpd2.log #Запрашиваем новый SSL и логируем результат /usr/bin/certbot -q renew 2>> /root/script_tmp/certbot_httpd2.log #Удаляем завершающую часть конфигурационного файлы чтобы легче было добавить редиректы sed -i "/^<\/VirtualHost>/d" "/etc/httpd2/conf/sites-enabled/000-default.conf" #Добавляем новые редиректы и завершение конфигурационного файла echo "RewriteEngine On" >> /etc/httpd2/conf/sites-enabled/000-default.conf echo "RewriteCond %{HTTPS} !=on" >> /etc/httpd2/conf/sites-enabled/000-default.conf echo "RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L]" >> /etc/httpd2/conf/sites-enabled/000-default.conf echo "</VirtualHost>" >> /etc/httpd2/conf/sites-enabled/000-default.conf #Логируем внесенные изменения tail -n8 /etc/httpd2/conf/sites-enabled/000-default.conf >> /root/script_tmp/certbot_httpd2.log #Перезапускаем сервис systemctl restart httpd2 2>> /root/script_tmp/certbot_httpd2.log
Такой скрипт можно добавить в планировщик задач, чтобы своевременно обновлять сертификат сайта.