В самом начале развития интернета все данные между сайтом и компьютером пользователя передавались открыто по протоколу HTTP, без шифрования, а это означает, что любой пользователь, находящийся между сервером и компьютером может прочитать эти данные или даже изменить. По такой схеме даже сейчас работает много сайтов. Но в нашем мире это не безопасно, поэтому был разработан протокол HTTPS, который позволяет шифровать данные для передачи между устройствами.
Для шифрования данных в этом протоколе используются сертификаты SSL. Сейчас HTTPS набирает большую популярность, такие компании, как Google пытаются заставить все больше сайтов интернета использовать SSL для защиты своих данных и организации более безопасного соединения. С другой стороны появился сервис Lets Encrypt, который позволяет получить SSL сертификат каждому полностью бесплатно. В этой статье мы рассмотрим как выполняется установка ssl сертификата Apache от Lets Encrypt.
Установка SSL сертификата Lets Encrypt в Apache
Я буду предполагать, что Apache у вас уже установлен и настроен для работы по протоколу http. Если это не так посмотрите статью установка и настройка Apache. Перед тем как переходить к самой настройке веб сервера нам нужно получить ssl сертификат, а для этого нужно установить клиент сервиса в систему.
Шаг 1. Установка клиента Lets Encrypt
Мы будем выполнять установку клиента Lets Encrypt из официальных репозиториев. Официальный клиент от Lets Encrypt называется certbot, в репозиториях Ubuntu 16.04 есть упрощенная версия - Letsencrypt. Нам полностью хватит ее функциональности. Для установки выполните команды:
$ sudo apt update
$ sudo apt install python-letsencrypt-apache
$ sudo apt install python-letsencrypt-apache
После этого клиент будет готов к использованию.
Шаг 2. Настройка Apache
Если Apache настроен на работу по http, то перед тем как идти дальше, должна быть выполнена настройка ssl apache. Нам нужно активировать модуль ssl и включить использование ssl по умолчанию.
Для активации модуля наберите:
$ sudo a2enmod ssl
Для использования SSL по умолчанию включаем конфигурационный файл:
$ sudo a2ensite default-ssl.conf
Осталось перезапустить веб-сервер для применения изменений:
$ sudo systemctl restart apache2
Шаг 3. Получение SSL сертификата
Установка ssl сертификата с помощью клиента Lets Encrypt выполняется очень просто. Клиент автоматически запросит и установит новый сертификат для принадлежащего вам домена.
Чтобы получить сертификат для одного домена, достаточно передать этот домен в параметрах команды:
$ sudo letsencrypt --apache -d example.com
Если нужно сделать сертификат действительным для нескольких доменов или субдоменов вы можете передать их в дополнительных параметрах. Первое доменное имя будет основным, поэтому рекомендуется передавать первым домен верхнего уровня, а уже потом субдомены:
$ sudo letsencrypt --apache -d example.com -d www.example.com
Дальше нужно будет ввести несколько настроек для сертификата, сначала укажите адрес электронной почты, который будет использоваться для восстановления утерянного ключа или отправки уведомлений:
Затем примите лицензионное соглашение Lets Encrypt:
Утилита сама выполнит настройку веб-сервера Apache, вам только нужно будет выбрать надо ли разрешать http трафик или сразу перенаправлять все на https. Безопаснее и более правильно перенаправлять весь входящий трафик на https.
Когда установка SSL сертификата Apache ubuntu будет завершена, вы найдете созданные файлы сертификатов в папке /etc/letsencrypt/live. В этой папке будут четыре файла:
- cert.pem - ваш сертификат домена;
- chain.pem - сертификат цепочки Let's Encrypt;
- fullchain.pem - cert.pem и chain.pem вместе;
- privkey.pem - секретный ключ вашего сертификата.
Теперь вы можете зайти на сайт по https. Чтобы проверить как работает SSL и правильно ли выполнена установка ssl сертификата на сайт, вы можете открыть в браузере такую ссылку:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
Шаг 4. Автопродление сертификата
Настройка ssl Apache завершена. Но есть один минус, все сертификаты, полученные от Lets Encrypt действительны только на протяжении 90 дней и рекомендуется продлевать и срок действия каждые 60 дней. Клиент letsecnrypt имеет команду renew, которая позволяет проверить установленные сертификаты и обновить их если до истечения срока осталось меньше 30 дней.
Чтобы запустить процесс обновления для всех настроенных доменов выполните:
$ sudo letsencrypt renew
Если сертификат был выдан недавно, то команда проверит его дату истечения и выдаст сообщение, что продление пока не требуется. Если вы создали сертификат для нескольких доменов, то в выводе будет показан только основной домен. Но обновление будет актуально для всех.
Самый простой способ автоматизировать этот процесс - добавить вызов утилиты в планировщик corn. Для этого выполните команду:
$ crontab -e
Затем, в открывшемся текстовом редакторе добавьте строку и сохраните изменения:
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
Таким образом, мы создали задачу, которая будет выполнять команду обновления каждый понедельник, в 2:30 утра. Информация про результат выполнения будет сохранятся в файл /var/log/le-renewal.log.
Выводы
В этой статье мы рассмотрели как выполняется установка ssl сертификата apache lets encrypt. Это поможет защитить ваш сайт от MITM атак, подслушивания и модификации трафика, а также благодаря тенденциям поощрения перехода на https может положительно сказаться на росте трафика.