Let’s Encrypt — это открытый и бесплатный центр сертификации, предоставляющий TLS-сертификаты с проверкой домена и работающий в автоматическом режиме. Если вы не знакомы с этой системой, рекомендуем ознакомиться с информацией на Википедии. В данной статье мы обсудим причины, по которым стоит использовать плагин webroot для получения и продления TLS-сертификата от Let’s Encrypt.

Содержание статьи
- 1 Как установить клиент для Let’s Encrypt
- 2 Плагины
- 3 Какой плагин стоит выбрать?
- 4 Как установить TLS-сертификат в Apache?
- 5 Установка TLS-сертификата в Nginx: шаги и рекомендации.
- 6 Как обстоят дела с почтовым сервером?
- 7 Как обновить сертификат TLS, полученный через плагин webroot?
- 8 Автоматизированное обновление сертификата.
- 9 Что предпринять, если я применял Apache или Standalone Plugin для получения сертификата?
- 10 Как определить, какой плагин был использован для получения сертификата?
Как установить клиент для Let’s Encrypt
Сначала необходимо установить клиент Let’s Encrypt (известный также как certbot) на ваш сервер с операционной системой Linux, используя приведённые команды. Этот инструмент совместим почти со всеми дистрибутивами Linux.
Загрузите certbot-auto с официального сайта EFF.
wget https://dl. eff. org/certbot-auto
Предоставьте разрешение на выполнение.
chmod a+x certbot-auto
Поместите его в пользовательский PATH, например, в каталог /usr/local/bin/, и дайте ему имя certbot.
sudo mv certbot-auto /usr/local/bin/certbot
Теперь можно воспользоваться командой certbot.
Плагины
Клиент Let’s Encrypt предлагает три плагина для разных веб-серверов.
- Модуль для Apache
- Плагин для Webroot
- Автономный плагин
Клиент Let’s Encrypt предоставляет возможность автоматической настройки веб-сервера Apache через плагин apache. Достаточно ввести одну команду, обновить страницу, и ваш сайт будет доступен через HTTPS.
Плагин webroot используется для различных веб-серверов. При его активации клиент Let’s Encrypt обращается к серверу CA Let’s Encrypt с просьбой разместить определенные файлы в каталоге /web-root-path/.well-known/acme-challenge, чтобы подтвердить владение доменом.
Плагин standalone применяется в ситуациях, когда веб-сервер на вашем сервере недоступен. Он создает независимый веб-сервер, который позволяет взаимодействовать с Let’s Encrypt.
Какой плагин стоит выбрать?
Проблема с автономным веб-сервером заключается в том, что для освобождения портов 80 и 443 необходимо остановить текущий веб-сервер (например, Apache, Nginx или любой другой). Это приводит к простоям при получении и обновлении сертификатов.
Проблема как с плагином apache, так и с плагином standalone заключается в том, что они не работают с сайтами, расположенными за CDN (Сеть доставки контента). При применении плагина apache или standalone клиент Let’s Encrypt обязан настроить TLS-сервер, который указан в A/AAAA записи для доменного имени, чтобы он мог отвечать на определенные запросы с использованием расширения Server Name Indication.
Если ваш сайт размещен за CDN, клиент Let’s Encrypt должен настраивать TLS-сервер на краевом сервере вашего CDN-поставщика, а не на вашем основном сервере. В связи с этим процесс может завершиться неудачей. Вы можете временно отключить CDN, но это откроет IP-адрес вашего сервера для внешнего доступа. Кроме того, автоматическое обновление вашего TLS-сертификата будет невозможно.
Плагин webroot выделяется своей эффективностью, так как он позволяет не останавливать действующий веб-сервер, и продолжает функционировать, даже если ваш сайт находится за CDN. Это достигается благодаря тому, что он осуществляет проверку контроля над доменным именем, размещая уникальный файл.
Можно ввести несколько субдоменов, как указано ниже, при условии, что ваш веб-сервер способен перенаправить сервер проверки Let’s Encrypt к соответствующей корневой директории.
-d your-domain.com - d www. your-domain - w /var/www/your-domain
Кроме того, вы можете указать несколько корневых доменов, как представлено ниже, при условии, что ваш веб-сервер способен перенаправить сервер проверки Let’s Encrypt к соответствующей корневой директории.
-d your-domain.com - w /var/www/your-domain.com - d your-domain. org - d www. your-domain. org - w /var/www/your-domaim. org
Все перечисленные домены будут объединены в одном сертификате. Ваш сертификат и закрытый ключ будут храниться в директории /etc/letsencrypt/archive/your-domain.com/. Certbot также создает символические ссылки в /etc/letsencrypt/live/your-domain.com/, которые ссылаются на каждый файл из архивного каталога.
После того как сертификат будет получен, приступим к его ручной установке.
Как установить TLS-сертификат в Apache?
Сначала внесите изменения в файл вашего виртуального хоста.
sudo nano /etc/apache2/sites-available/your-domain.com.conf
Вставьте указанные строки выше.
RewriteEngine on RewriteCond % =your-domain.com RewriteRule ^ https://%% [END, QSA, R=permanent]
Эти три строки указывают Apache на необходимость всегда перенаправлять пользователей на HTTPS-версию вашего сайта. После этого сохраните изменения и закройте файл. Затем создайте файл виртуального хоста для HTTPS-версии вашего сайта.
sudo nano /etc/apache2/sites-available/your-domain.com-https.conf
Сохраните указанные строки в документ.
Сохраните файл и закройте его. После этого активируйте версию вашего сайта с HTTPS.
sudo a2ensite your-domain.com-https.conf
Перезапустите Apache.
sudo systemctl reload apache2
Теперь откройте свой сайт в браузере, и вы заметите зеленый замок.
Установка TLS-сертификата в Nginx: шаги и рекомендации.
Откройте файл конфигурации сервера Nginx.
sudo nano /etc/nginx/confi. d/your-domain.com.conf
Измените файл согласно указанным ниже инструкциям.
сервер < слушать 80; server_name your-domain.com; вернуть 301 https:$server_name$request_uri; > сервер < слушать 443 ssl; server_name your-domain.comКонечная точка/var/www/your-domain/ssl-сертификат расположен в /etc/letsencrypt/live/your-domain.com
/fullchain. pem; ssl_certificate_key /etc/letsencrypt/live/
your-domain.com/privkey. pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets отключены; ssl_protocols TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers включены; # HSTS (требуется ngx_http_headers_module) (15768000 секунд = 6 месяцев) add_header Strict-Transport-Security max-age=15768000; . Ваши пользовательские директивы здесь. . >
Закройте и сохраните файл, после чего проверьте настройки Nginx и перезапустите сервер.
sudo nginx - t sudo systemctl reload nginx
Если вы работаете с Nginx версии 1.9.5 или выше, можно добавить директиву http2 после listen 443 ssl, как в примере ниже, для активации протокола HTTP/2, что позволит заметно повысить скорость взаимодействия между вашим веб-сервером и браузером пользователя.
listen 443 ssl http2;
Как обстоят дела с почтовым сервером?
Почтовый сервер не способен напрямую взаимодействовать с сервером проверки Let’s Encrypt. Однако мы можем применить плагин webroot для получения сертификата для почтового сервера. Для этого необходимо создать виртуальный хост в Apache или блок сервера в Nginx, указав полное доменное имя (FQDN) вашего почтового сервера.
Если FQDN вашего почтового сервера составляет mail.your-domain.com, тогда в конфигурации виртуального хоста Apache значение ServerName должно быть установлено как mail.your-domain.com. В конфигурации блока сервера Nginx параметр server_name также должен быть mail.your-domain.com. Проверьте, что вы создали веб-корень и назначили пользователя веб-сервера (www-data) владельцем этого каталога.
Затем примените команду certbot вместе с плагином webroot для получения сертификата TLS. Для получения подробностей о том, как установить сертификат TLS на сервере Postfix SMTP и Dovecot IMAP, пожалуйста, обратитесь к следующему руководству.
- Настройка личного почтового сервера: часть 4 — Postfix, Dovecot и шифрование TLS.
Как обновить сертификат TLS, полученный через плагин webroot?
Сертификат TLS от Let’s Encrypt имеет срок действия 90 дней. Для его продления достаточно выполнить следующую команду:
sudo certbot renew
Подкоманда renew анализирует, истекли ли 60 дней с момента выдачи вашего сертификата. Если этот срок еще не прошел, она уведомит вас о том, что продление не требуется. В случае, если срок действия сертификата истекает в течение 30 дней, будет произведено чтение файла конфигурации продления, расположенного по адресу /etc/letencrypt/renewal/your-domain.conf, и сертификат будет продлен. Этот конфигурационный файл предоставляет certbot информацию о плагине и параметрах, использованных при первоначальном получении сертификата.
Таким образом, команда renew в действительности эквивалентна следующей команде:
sudo certbot certonly --webroot --agree-tos --email
your-email address
- d your-domain.com - w /var/www/your-domain.com/
Для обновления сертификата принудительно используйте параметр —force-renewal. Возможно, вам потребуется перезагрузить веб-сервер, чтобы клиенты могли получить доступ к новому сертификату.
sudo systemctl reload apache2
sudo systemctl reload nginx
Автоматизированное обновление сертификата.
Для автоматического обновления сертификата необходимо внести изменения в файл crontab пользователя root одним из следующих способов.
su - crontab - e
sudo crontab - e
В конце файла необходимо добавить следующую строку.
@daily certbot renew --quiet
Закройте и сохраните файл. Обновление выполняется ежедневно. Параметр —quiet отключает все сообщения, кроме ошибок. Не переживайте из-за ошибок обновления, certbot будет пытаться выполнить обновление каждый день.
Если автоматические обновления не сработают, вы получите уведомление на свою электронную почту от Let’s Encrypt за 20 дней до истечения срока действия сертификата. (Этот срок может меняться, но уведомление придёт до конца действия сертификата.) В этом случае вы сможете вручную выполнить команду обновления, выяснить причины сбоев в автоматическом процессе, исправить ошибки и продлить срок действия сертификата.
Возможно, вам потребуется перезагрузить веб-сервер, поэтому задача cron должна быть оформлена следующим образом:
@daily certbot renew --quiet && systemctl reload apache2
@daily certbot renew --quiet && systemctl reload nginx
Можно вставить строку MAILTO в начале файла cron, чтобы получать уведомления об ошибках на ваш электронный адрес. Если ошибок нет, это свидетельствует о том, что все сертификаты были успешно обновлены.
Что предпринять, если я применял Apache или Standalone Plugin для получения сертификата?
Не имеет значения, какой плагин был применён для получения сертификата; вы всегда можете обновить его с помощью плагина webroot, как это показано ниже.
sudo certbot certonly --webroot --agree-tos --email
ваш-адрес электронной почты
- d ваш-домен.com - w /var/www/ваш-домен.com/
Файл конфигурации обновления будет скорректирован с учетом того, что вы в этот раз применяете webroot. В следующий раз достаточно будет ввести команду sudo certbot renew для обновления сертификата.
Как определить, какой плагин был использован для получения сертификата?
Если вы забыли, какой плагин был использован, существует лёгкий способ это выяснить. Сначала зайдите под учетной записью root.
После этого откройте файл настроек обновления.
nano /etc/letsencrypt/renewal/ваш-домен.com.conf
Найдите строку, которая начинается с слова «authenticator».
authenticator = standalone
Эта фраза указывает на то, что вы применили плагин standalone для получения своего сертификата.
authenticator = apache
Эта фраза указывает на то, что вы применили плагин Apache для получения сертификата.
authenticator = webroot
Эта фраза указывает на то, что вы применили плагин webroot для получения своего сертификата.
Если вам показался этот пост интересным, не забудьте подписаться на нашу бесплатную рассылку. Также вы можете следить за нами в Google+, Twitter или поставить лайк нашей странице на Facebook.

