Участвуй в конкурсе сайтов
Получи профессиональную оценку сайта и
награду за дизайн, контент или технологичность

Apache + Ubuntu 18.04. Выпуск и установка SSL-сертификата Let's Encrypt

Обсудить
Apache + Ubuntu 18.04.Выпуск и установка SSL-сертификата Let's Encrypt

Let's Encrypt - некоммерческий центр сертификации, предоставляющий бесплатные TLS/SSL-сертификаты. Это дает возможность использовать защищенный протокол HTTPS каждому пользователю. Для получения сертификата данный центр предлагает использовать клиент Certbot, который автоматизирует все (или почти все) шаги, которые нужно пройти, чтобы получить сертификат. Кроме того, этот клиент позволяет установить сертификат на таких веб-серверах как NGINX и Apache.

Apache - свободный кроссплатформенный веб-сервер, основными особенностями которого является надежность и возможность настройки под себя.

В этой статье вы узнаете, как с помощью Certbot выпустить бесплатный SSL-сертификат, установить его и настроить автоматическое продление. 

Apache + Ubuntu SSL certbot

1. Создание нового виртуального хоста

Первым делом создадим новый виртуальный хост (если он еще не создан). Для этого создаем директорию сайта в /var/www/ командой:

mkdir domain.name

где вместо domain укажем свой домен.

Далее перейдем в /etc/apache2/sites-available/ и создадим для своего домена конфигурационный файл domain.conf, где вместо domain укажем свой домен. 

В файл поместим:

<VirtualHost *:80>
    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 инструмента:

$ a2ensite domain.name.conf

Отключим сайт по умолчанию, определенный в 000-default.conf:

$ a2dissite 000-default.conf

Далее проверим APACHE на ошибки конфигурации:

$ apache2ctl configtest

Вы должны увидеть следующий вывод:

Output
Syntax OK

Перезапустим Apache, чтобы внести изменения:

$ systemctl restart apache2
 

2. Подготовка к выпуску SSL-сертификата

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

Если вы не пропустили первый пункт, VirtualHost для вашего домена в /etc/apache2/sites-available/domain.name.conf с директивой ServerName добавлен должным образом.

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

$ systemctl restart apache2

На этом подготовка конфигурационных файлов для работы с Certbot заканчивается.

3. Настройка HTTPS

Если вы используете файрвол ufw, HTTPS по умолчанию будет отключен. Сначала давайте проверим статус:

$ ufw status

В моем случае он был отключен:

Status: inactive

Включаем:

$ ufw enable

Повторяем проверку и, скорее всего, увидим:

Status: active

Чтобы пропустить трафик HTTPS, разрешаем профиль Apache Full и SSH, так как если этого не сделать, подключиться по SSH в будущем не выйдет:

$ ufw allow ‘Apache Full’
$ ufw allow ssh

И после повторной проверки увидим:

To                             Action          From
--                              ------            ----
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 вводим команду:

$ apt-get install software-properties-common

Далее добавляем репозиторий:

$ add-apt-repository ppa:certbot/certbot

Вам нужно будет нажать ENTER, чтобы принять.

Установим пакет Apache Certbot с apt:

$ sudo apt install python-certbot-apache

Итак, мы подготовили Certbot к использованию. Теперь, чтобы он смог настроить сертификат для Apache, нам необходимо проверить некоторые настройки веб-сервера.

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

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

$ certbot --apache --email admin@email.ru -d domain.name -d www.domain.name

Он запускает Certbot с плагином --apache, используя -d для указания имен, для которых выпускается сертификат и --email для указания email, на который будут приходить письма о том, что данный сертификат заканчивается (при желании можно опустить и не добавлять этот плагин).

При первом запуске Certbot предлагается указать почтовый ящик и согласиться с условиями обслуживания. 

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

Please choose whether or not 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): 

Выбираете подходящий вариант:
1 - стандартная настройка apache для работы с HTTPS-запросами;
2 - вдобавок к первому варианту - настройка перенаправления на сайте.

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

6. Проверка автоматического продления срока действия Certbot

Сертификат Let's Encrypt действует только 90 дней. Чтобы он продлевался автоматически, при установке пакета Certbot был добавлен скрипт для crontab. Скрипт запускается дважды в день, он автоматически обновляет любой сертификат за 14 дней до конца срока его действия и в течение 30 дней с момента завершения срока действия.

Чтобы проверить возможность продления, введем команду:

$ certbot renew --dry-run

Если не возникло ошибок - все отлично, и сертификат будет автоматически продлеваться (каждый раз на 90 дней). Если Certbot не сможет продлить SSL, центр сертификации отправит уведомление на электронный адрес, который вы ввели ранее. В письме будет указано, когда закончится срок действия вашего сертификата.

P.S. Если после прочтения у вас остались вопросы, задавайте их в комментариях. Буду рад ответить!

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте