LetsEncrypt: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «Использовать [https://letsencrypt.org/ Let's Encrypt] очень просто. # apt-get install letsencrypt (Пока пакет доступен то...»)
 
Нет описания правки
 
(не показано 11 промежуточных версий 4 участников)
Строка 1: Строка 1:
Использовать [https://letsencrypt.org/ Let's Encrypt] очень просто.
Использовать [https://letsencrypt.org/ Let's Encrypt] очень просто.


  # apt-get install letsencrypt
  # apt-get install certbot
(Пока пакет доступен только для Сизифа)
(Пакет доступен для ALT Linux p8, p9 и Сизифа)


С работающим веб-сервером можно запустить примерно так:
С работающим веб-сервером можно запустить примерно так:
  # letsencrypt certonly --webroot -w$DIR -d $DOMAIN  
  # 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:
 
Для периодического обновления сертификата добавил в cron:
<source lang="bash">
<source lang="bash">
# cat /etc/cron.weekly/letsencrypt  
# cat /etc/cron.weekly/letsencrypt  
#!/bin/sh
#!/bin/sh
letsencrypt renew
/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/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=*}}
[[Категория:Администрирование]]

Текущая версия от 12: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

Такой скрипт можно добавить в планировщик задач, чтобы своевременно обновлять сертификат сайта.

Ссылки