СОЗДАНИЕ СЕРТИФИКАТА 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, обратитесь к документации клиента.