Let's Encrypt - некоммерческий центр сертификации, предоставляющий бесплатные TLS/SSL-сертификаты. Это дает возможность использовать защищенный протокол HTTPS каждому пользователю. Для получения сертификата данный центр предлагает использовать клиент Certbot, который автоматизирует все (или почти все) шаги, которые нужно пройти, чтобы получить сертификат. Кроме того, этот клиент позволяет установить сертификат на таких веб-серверах как NGINX и Apache.
Apache - свободный кроссплатформенный веб-сервер, основными особенностями которого является надежность и возможность настройки под себя.
В этой статье вы узнаете, как с помощью Certbot выпустить бесплатный SSL-сертификат, установить его и настроить автоматическое продление.
1. Создание нового виртуального хоста
Первым делом создадим новый виртуальный хост (если он еще не создан). Для этого создаем директорию сайта в /var/www/ командой:
где вместо domain укажем свой домен.
Далее перейдем в /etc/apache2/sites-available/ и создадим для своего домена конфигурационный файл domain.conf, где вместо domain укажем свой домен.
В файл поместим:
ServerAdmin webmaster@localhost
ServerName domain.name
ServerAlias www.domain.name
DocumentRoot /var/www/domain.name
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Давайте включим файл с помощью a2ensite инструмента:
Отключим сайт по умолчанию, определенный в 000-default.conf:
Далее проверим APACHE на ошибки конфигурации:
Вы должны увидеть следующий вывод:
Syntax OK
Перезапустим Apache, чтобы внести изменения:
2. Подготовка к выпуску SSL-сертификата
Для выпуска сертификата Certbot проверяет виртуальный хост в конфигурации Apache, это позволяет автоматически выпускать и продлевать SSL. Делает он это путем поиска директивы ServerName, которая должна соответствовать домену, для которого выпускается сертификат.
Если вы не пропустили первый пункт, VirtualHost для вашего домена в /etc/apache2/sites-available/domain.name.conf с директивой ServerName добавлен должным образом.
Если же вы пропустили первый пункт, или у вас уже был создан конфигурационный файл, исправьте его, чтобы ServerName содержал имя вашего домена, после чего сохраните и перезапустите Apache:
На этом подготовка конфигурационных файлов для работы с Certbot заканчивается.
Читайте также
3. Настройка HTTPS
Если вы используете файрвол ufw, HTTPS по умолчанию будет отключен. Сначала давайте проверим статус:
В моем случае он был отключен:
Включаем:
Повторяем проверку и, скорее всего, увидим:
Чтобы пропустить трафик HTTPS, разрешаем профиль Apache Full и SSH, так как если этого не сделать, подключиться по SSH в будущем не выйдет:
$ ufw allow ssh
И после повторной проверки увидим:
-- ------ ----
Apache Full ALLOW Anywhere
22/tcp ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
После этого мы можем перейти непосредственно к выпуску сертификата.
4. Установка Certbot
Для получения SSL-сертификата Let's Encrypt необходимо установить программу Certbot на сервер.
При установке программного обеспечения из PPA вводим команду:
Далее добавляем репозиторий:
Вам нужно будет нажать ENTER, чтобы принять.
Установим пакет Apache Certbot с apt:
Итак, мы подготовили Certbot к использованию. Теперь, чтобы он смог настроить сертификат для Apache, нам необходимо проверить некоторые настройки веб-сервера.
5. Получение SSL-сертификата
В Certbot предусмотрено несколько способов получения SSL. Для Apache есть плагин --apache, который добавляется в команду и отвечает за автоматическую настройку Apache и перезапуск конфигурации. Таким образом, команда для получения сертификата будет иметь вид:
Он запускает Certbot с плагином --apache, используя -d для указания имен, для которых выпускается сертификат и --email для указания email, на который будут приходить письма о том, что данный сертификат заканчивается (при желании можно опустить и не добавлять этот плагин).
При первом запуске Certbot предлагается указать почтовый ящик и согласиться с условиями обслуживания.
Если все прошло успешно, вы увидите сообщение с вопросом, как вы хотите настроить параметры HTTPS:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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):
Выбираете подходящий вариант:
1 - стандартная настройка apache для работы с HTTPS-запросами;
2 - вдобавок к первому варианту - настройка перенаправления на сайте.
После этого вы увидите финальное сообщение, в котором будет указан путь до файлов сертификата и другая дополнительная информация. Ваш сайт уже будет работать по защищенному соединению.
Читайте также
6. Проверка автоматического продления срока действия Certbot
Сертификат Let's Encrypt действует только 90 дней. Чтобы он продлевался автоматически, при установке пакета Certbot был добавлен скрипт для crontab. Скрипт запускается дважды в день, он автоматически обновляет любой сертификат за 14 дней до конца срока его действия и в течение 30 дней с момента завершения срока действия.
Чтобы проверить возможность продления, введем команду:
Если не возникло ошибок - все отлично, и сертификат будет автоматически продлеваться (каждый раз на 90 дней). Если Certbot не сможет продлить SSL, центр сертификации отправит уведомление на электронный адрес, который вы ввели ранее. В письме будет указано, когда закончится срок действия вашего сертификата.
P.S. Если после прочтения у вас остались вопросы, задавайте их в комментариях. Буду рад ответить!
Комментарии