СОЗДАНИЕ СЕРТИФИКАТА LET’S ENCRYPT ДЛЯ APACHE В UBUNTU 18.04

Let’s Encrypt – это центр сертификации (ЦС), который предлагает простой способ создания и установки бесплатных сертификатов TLS/SSL, тем самым обеспечивая зашифрованные HTTPS-соединения. Let’s Encrypt упрощает процесс генерирования сертификата с помощью клиента Certbot, который автоматизирует большинство (если не все) необходимые этапы. В настоящее время весь процесс получения и установки сертификата полностью автоматизирован как для Apache, так и для Nginx.

Читайте также: Основы OpenSSL: SSL-сертификаты, закрытые ключи и запросы на подпись

Данный мануал поможет настроить сертификат Let’s Encrypt для пользовательского виртуального хоста Apache на сервере Ubuntu18.04. Рекомендуем вам начинать со свежей установки веб-сервера, поскольку это позволит вам избежать общих ошибок и сохранить стандартные файлы в качестве резервной конфигурации.

Требования

  • Сервер Ubuntu 18.04, настроенный по этому мануалу.
  • FRDN. В этом мануале используется условный домен example.com.
  • DNS-записи А для example.com и www.example.com, указывающие на внешний IP-адрес сервера.
  • Веб-сервер Apache, установленный по этому мануалу. В этом мануале в качестве виртуального хоста используется /etc/apache2/sites-available/example.com.conf.

1: Установка Certbot

Для начала нужно установить клиент Certbot.

Certbot очень активно разрабатывается, потому его пакеты в стандартных репозиториях систем быстро устаревают. Однако разработчики Certbot предлагают специальный репозиторий для Ubuntu, где можно найти актуальные версии пакетов.

Добавьте этот репозиторий:

sudo add-apt-repository ppa:certbot/certbot

Чтобы продолжить, нажмите Enter. Обновите индекс пакетов:

sudo apt update

Теперь установите пакет certbot для Apache:

sudo apt install python-certbot-apache

Теперь Certbot готов к использованию, но для того, чтобы настроить SSL для Apache, нужно проверить некоторые параметры конфигурации Apache.

2: Настройка SSL-сертификата.

Certbot должен иметь возможность найти целевой виртуальный хост в конфигурации Apache, чтобы автоматически настроить сертификат SSL. Для этого Certbot ищет директиву ServerName, где указан домен, для которого предназначен запрашиваемый сертификат.

Если вы следовали разделу по установке виртуального хоста в мануале по установке Apache, у вас должен быть виртуальный хост для домена сайта в /etc/apache2/sites-available/example.com.conf, где директива ServerName уже настроена соответствующим образом.

Чтобы проверить это, откройте файл виртуального хоста, используя nano или другой текстовый редактор:

sudo nano /etc/apache2/sites-available/example.com.conf

Найдите строку ServerName:

...<br>ServerName example.com;<br>...

Если она выглядит так, можете закрыть редактор.

Если нет, вам нужно обновить ее. Укажите в ней свой домен, а затем сохраните и закройте файл. После этого нужно проверить синтаксис конфигурации.

sudo apache2ctl configtest

Если команда сообщила об ошибке, вам нужно снова открыть файл и исправить ее. После этого повторите проверку.

Если ошибок в конфигурации нет, перезапустите веб-сервер.

sudo systemctl reload apache2

Теперь Certbot сможет найти правильный блок VirtualHost.

3: Настройка брандмауэра

Если у вас на сервере включен брандмауэр ufw, вам нужно настроить его для поддержки соединений HTTPS.

Во время установки Apache регистрирует в ufw несколько профилей. Просмотреть текущие настройки можно с помощью команды:

sudo ufw status

Скорее всего, брандмауэр пока что поддерживает только трафик HTTP:

Status: active<br>To  Action  From<br>--  ------  ----<br>OpenSSH  ALLOW  Anywhere<br>Apache   ALLOW  Anywhere<br>OpenSSH (v6)  ALLOW  Anywhere (v6)<br>Apache (v6)  ALLOW  Anywhere (v6)

Чтобы разблокировать трафик HTTPS, активируйте профиль Apache Full и удалите профиль Apache.

sudo ufw allow 'Apache Full'<br>sudo ufw delete allow 'Apache'

Теперь параметры брандмауэра будут выглядеть так:

sudo ufw status<br>Status: active<br>To  Action  From<br>--  ------  ----<br>OpenSSH  ALLOW  Anywhere<br>Apache Full  ALLOW  Anywhere<br>OpenSSH (v6)  ALLOW  Anywhere (v6)<br>Apache Full (v6)  ALLOW  Anywhere (v6)

Теперь пора запустить Certbot и получить сертификаты.

4: Получение SSL-сертификата

Certbot предлагает различные способы получения сертификатов SSL через плагины. Плагин Apache позаботится о реконфигурации Apache и при необходимости перезагрузит конфигурацию. Чтобы использовать этот плагин, введите:

sudo certbot --apache -d example.com -d www.example.com

Эта команда запустит certbot с плагином –apache, а флаг –d определит имена, для которых предназначен сертификат.

Если вы запускаете certbot впервые, вам будет предложено ввести адрес электронной почты и принять условия обслуживания. После этого certbot свяжется с сервером Let’s Encrypt, а затем отправит запрос, чтобы убедиться, что вы контролируете домен, для которого запрашиваете сертификат.

Если проверка пройдет успешно, certbot спросит, как вы хотите настроить HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.<br>-------------------------------------------------------------------------------<br>1: No redirect - Make no further changes to the webserver configuration.<br>2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for<br>new sites, or if you're confident your site works on HTTPS. You can undo this<br>change by editing your web server's configuration.<br>-------------------------------------------------------------------------------<br>Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Сделайте свой выбор, затем нажмите Enter. Конфигурация будет обновлена, и Apache перезагрузится, чтобы использовать новые настройки. Клиент certbot выведет сообщение о том, что процесс был выполнен успешно и скажет, где хранятся ваши сертификаты:

IMPORTANT NOTES:<br>- Congratulations! Your certificate and chain have been saved at:<br>/etc/letsencrypt/live/example.com/fullchain.pem<br>Your key file has been saved at:<br>/etc/letsencrypt/live/example.com/privkey.pem<br>Your cert will expire on 2018-07-23. To obtain a new or tweaked<br>version of this certificate in the future, simply run certbot again<br>with the "certonly" option. To non-interactively renew *all* of<br>your certificates, run "certbot renew"<br>- Your account credentials have been saved in your Certbot<br>configuration directory at /etc/letsencrypt. You should make a<br>secure backup of this folder now. This configuration directory will<br>also contain certificates and private keys obtained by Certbot so<br>making regular backups of this folder is ideal.<br>- If you like Certbot, please consider supporting our work by:<br>Donating to ISRG / Let's Encrypt:  https://letsencrypt.org/donate<br>Donating to EFF:  https://eff.org/donate-le

Сертификаты будут загружены и установлены. Попробуйте перезагрузить свой сайт, указав , и обратите внимание на индикатор безопасности в браузере. Он должен указывать, что сайт надежно защищен (как правило, для этого используется зеленый замочек в адресной строке). Если вы протестируете свой сервер с помощью SSL Labs Server Test, он получит оценку A.

Теперь давайте протестируем процесс обновления сертификата.

5: Проверка автоматического обновления сертификата

Сертификаты Let’s Encrypt действительны только в течение девяноста дней. Потому пользователи должны автоматизировать процесс продления сертификата. Установленный вами пакет certbot позаботится об этом, добавив сценарий обновления в /etc/cron.d. Этот скрипт запускается два раза в день и автоматически обновляет сертификат, срок действия которого истекает через тридцать дней.

Чтобы протестировать процесс обновления, вы можете выполнить сухой прогон certbot:

sudo certbot renew --dry-run

Если вы не видите ошибок, все настроено правильно. При необходимости Certbot обновит ваши сертификаты и перезагрузит Apache, чтобы активировать изменения. Если процесс автоматического обновления не срабатывает, Let’s Encrypt отправит сообщение на указанный вами адрес электронной почты, предупредив вас о завершении срока действия вашего сертификата.

Заключение

В этом мануале вы научились устанавливать клиент certbot, загружать сертификаты SSL, настраивать Apache для использования этих сертификатов и тестировать автоматическое обновление сертификата. Если у вас есть дополнительные вопросы по использованию Certbot, обратитесь к документации клиента.

04:04
Set
RSS
Нет комментариев. Ваш будет первым!