Как защитить Apache с помощью Let’s Encrypt на Ubuntu

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

В этом руководстве вы используете Certbot для получения бесплатного SSL-сертификата для Apache на Ubuntu/Debian и настроите сертификат так, чтобы он автоматически продлевался.

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

Если вы хотите установить сертификат вручную, вы можете проверить Установку Let’s Encrypt SSL на Ubuntu.

Предварительные условия

  • Один настроенный сервер Ubuntu/Debian, а также неroot пользователь с брандмауэром и привилегиями sudo.
  • Доменное имя, которое полностью зарегистрировано. В этом руководстве мы будем использовать ваш_домен в качестве примера на протяжении всего пути.
  • Обе эти записи DNS настроены для вашего сервера.
    • Запись A с ваш_домен , указывающий на публичный ID-адрес вашего сервера.
    • Запись A с www.your_domain, указывающая на публичный ID-адрес вашего сервера.
  • Установлен Apache. Убедитесь, что для вашего домена уже настроен файл виртуального хоста. В этом уроке мы будем использовать /etc/apache2/sites-available/your_domain.conf в качестве примера.

Шаг 1 — установка Certbot с помощью Snap

Snap можно использовать во всех основных дистрибутивах Linux, включая Ubuntu, Linux Mint, Debian и Fedora.

Snap поставляется предустановленным на Ubuntu 16 и более поздних версиях. Чтобы убедиться, что у вас самая последняя версия snapd, выполните следующие команды из командной строки системы.

$ sudo snap install core; sudo snap refresh core

Чтобы установить Certbot, используйте эту команду в командной строке машины.

$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Шаг 2 — Установка SSL-сертификата

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

У вас уже должен быть VirtualHost блок для вашего домена на /etc/apache2/sites-available/your_domain.conf с ServerName директива установлена правильно.

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

$ sudo nano /etc/apache2/sites-available/your_domain.conf

Найдите уже существующий ServerName строка. Она будет похожа на эту, но с вашим доменным именем вместо ваш_домен :

...
ServerName your_domain;
...

Если этого не произошло, обновите ServerName директива должна указывать на имя вашего домена, затем выйдите из редактора после сохранения файла и проверьте синтаксис ваших конфигурационных правок:

$ sudo apache2ctl configtest

Если синтаксические ошибки отсутствуют, вы увидите следующий результат:

Вывод:
Syntax OK

Если вы получили ошибку, откройте файл виртуального хоста заново и проверьте, нет ли в нем опечаток или пропущенных символов. Если синтаксис файла конфигурации правильный, перезагрузите Apache, чтобы загрузить новую конфигурацию:

$ sudo systemctl restart apache2

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

Шаг 3 — Разрешить HTTPS через брандмауэр

Если ваш ufw брандмауэр включен, как рекомендовано в части предварительных условий, вам придется изменить настройки, чтобы разрешить трафик HTTPS. К счастью, ufw поставляется в пакете с несколькими профилями, которые помогают упростить процесс изменения правил брандмауэра для HTTP и HTTPS трафика при установке на Ubuntu/Debian.

Визуализировать текущие настройки можно, набрав следующую команду:

$ sudo ufw status

Вывод этой команды должен выглядеть примерно так, показывая, что на веб-сервер разрешен только HTTP-трафик:

Вывод:
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW (v6)                   ALLOW       Anywhere (v6)

Чтобы пропустить дополнительный HTTPS-трафик, включите профиль «WWW Full» и удалите повторное разрешение профиля «WWW»:

$ sudo ufw allow 'WWW Full'
$ sudo ufw delete allow 'WWW'

Теперь ваш статус должен быть примерно таким:

$ sudo ufw status
Выход:
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW Full                   ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW Full (v6)              ALLOW       Anywhere (v6)

Шаг 4 — Получение SSL-сертификата в Apache

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

$ sudo certbot --apache -d your_domain -d www.your_domain

Это позволит certbot для запуска с --apache плагин, при использовании -d чтобы уточнить имена, чей сертификат должен быть действительным.

Если вы запускаете certbot В первый раз вам будет предложено ввести адрес электронной почты и согласиться с условиями предоставления услуг. Вас также спросят, хотите ли вы поделиться своим адресом электронной почты с Electronic Frontier Foundation — некоммерческой организацией, которая занимается защитой цифровых прав, а также является создателем Certbot. Вы можете либо ввести Y чтобы поделиться своим адресом электронной почты или N если вы не хотите этого делать.

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

Если все работает нормально, certbot спросит, как вы хотите настроить параметры HTTPS:

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

Выберите подходящий для вас вариант и нажмите кнопку ENTER. Конфигурация будет автоматически обновлена, и Apache будет перезагружен для интеграции выбранных настроек.

В завершение certbot выдаст сообщение об успешном завершении процесса и покажет, где хранятся ваши сертификаты:

Вывод:
IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2019-10-20. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
— If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Ваши сертификаты были загружены, установлены и загружены. Перезагрузите ваш сайт с помощью https:// и обратите внимание на индикатор безопасности вашего браузера. Он должен показывать, обычно с помощью зеленого значка замка, что сайт хорошо защищен. Если вы используете SSL Labs Serevt Test для проверки вашего сервера, он получит значение A оценка.

Шаг 5 — Проверка автообновления Certbot

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

Чтобы протестировать процесс обновления, выполните пробный запуск, используя certbot:

$ sudo certbot renew --dry-run

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

Заключение

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

Получите дешевый SSL от всех известных SSL-провайдеров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *