Установка сертификата SSL на Ubuntu с Apache
Вступление
SSL сертификаты применяются веб-серверами для шифрования трафика между сервером и клиентом.
Зачем нужна установка сертификата SSL на веб-сайт:
- Позволяет устанавливать безопасное соединение между веб-сервером и клиентом. Особенно это актуально для сайтов, которые осуществляют платежи через интернет и оперируют другой чувствительной и конфиденциальной информацией пользователей.
- Позволяет сайту, защищенному сертификатом SSL, подняться в результатах выдачи Google.
Эта статья расскажет:
- Как бесплатно установить SSL сертификат на Ubuntu 16.04 с веб-сервером Apache.
- Также мы покажем, как сделать автоматическое обновление сертификата SSL с помощью сервиса cron.
- Воспользуемся сервисом Let’s Encrypt, который предоставляет бесплатные сертификаты, в отличие от других большинства сервисом, и позволяет легко установить их на сервер. Let's Encrypt - это некоммерческая организация, которая предоставляет бесплатный, полностью автоматизированный и открытый CA (certificate authority - центр сертификации) сертификат.
Предварительные требования для того, чтобы успешно установить сертификат SSL по этой инструкции Вам необходимо:
- Установленный Ubuntu 16.04 сервер и доступ sudo user
- Установленный cron
- Установленный и правильно настроенный веб-сервер Apache с одним или несколькими доменами
Установка Let's Encrypt делается в 4 шага
Шаг 1 — Установить необходимые программы зависимости для сервера
Обновим кэш менеджера пакетов, чтобы получить последние версии програмного обеспечения
1 |
sudo apt-get update |
Установим git (распределённая система управления версиями) для того, чтобы скачать последнюю версию клиента Let’s Encrypt client:
1 |
sudo apt-get install git |
Шаг 2 — Установка клиента Let’s Encrypt
Скачаем клиент Let’s Encrypt из официального репозитория и разместим его файлы на сервере.
Клонируем репозиторий Let’s Encrypt в папку /opt, которая является стандартной папкой для размещения в Linux программ сторонних производителей:
1 |
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt |
Это создаст локальную копию официального репозитория Let’s Encrypt в папке /opt/letsencrypt.
Шаг 3 — Получение и установка SSL сертификата
Получение и установка SSL сертификата с помощью Let’s Encrypt довольно простая. Клиент Let’s Encrypt делает все автоматически и устанавливает новый SSL сертификат ,который валиден для доменов, указанных в качестве параметров.
Перейдем с папку letsencrypt:
1 |
cd /opt/letsencrypt |
Для того, чтобы установить сертификат для одного домена, еобходимо запустить letsencrypt-auto со следующими параметрами (в качестве примера генерируется сертификат для сайта example.com):
1 |
sudo ./letsencrypt-auto --apache -d example.com |
Если вы хотите установить один сертификат, который будет действовать для нескольких доменов или субдоменов, то необходимо перечислить их в качестве дополнительных параметров:
1 |
sudo ./letsencrypt-auto --apache -d example.com -d www.example.com |
Рекомендуем делать именно этот вариант, чтобы потом иметь возможность перенаправлять запросы вида разных видов на единственный домен https://example.com, который будет указан в качестве основного в поисковых системах:
- http://example.com
- http://www.example.com
- https://example.com
- https://www.example.com
Во время установки программа предложит ввести опции:
- email для восстановления сертификатов и уведомлений
- выбрать вариант настройки сервера Easy при котором возможен доступ как незащищенный http, так и защищенный https или вариант Secure, при котором веб сервер будет настроен только на работу с защищенным доступом https (мы рекомендуем именно второй вариант)
Когда установка завершится, вы сможете найти сгенерированные сертификаты в папке /etc/letsencrypt/live. Чтобы проверить статус вашего SSL сертификата и его работу на сервере, воспользуйтесь сервисом https://www.ssllabs.com/ssltest/
Шаг 4 — Установка автообновления
Сертификаты Let’s Encrypt действительны на протяжении 90 дней. Однако рекомендуется обновлять их каждые 60 дней, чтобы не пропустить срок. У клиента Let's Encrypt есть команда, которая позволяет обносить сертификат, если до истечения срока его валидности меньше 30 дней. Это позволяет сделать команда:
1 |
sudo ./letsencrypt-auto renew |
Есть запустить эту программу сразу, после установки сертификата, то она толкьо проинформирует, что пока нет необходимости обновлять сертификат:
1 2 3 4 5 6 7 |
Checking for new version... Requesting root privileges to run letsencrypt... /root/.local/share/letsencrypt/bin/letsencrypt renew Processing /etc/letsencrypt/renewal/example.com.conf The following certs are not due for renewal yet: /etc/letsencrypt/live/example.com/fullchain.pem (skipped) No renewals were attempted. |
Чтобы обеспечить автоматическое обновление сертификатов, воспользуемся командой cron. Сертификаты будут проверяться и обновляться только если будет менее 30 дней до даты истечения их валидности.
Отредактируем crontab и создадим новое задание, которео будет запускать программу проверки и обновления сертификатов каждую неделю:
1 |
sudo crontab -e |
Включите следующую строку:
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/letsencrypt-renew.log
Сохраните и выйдите из редактирования файла. Эта создаст новую задачу cron, которая будет автоматически запускать letsencrypt-auto каждый понедельник в 2:30. Результат будет выводиться в лог файл по адресу /var/log/ letsencrypt-renew.log.
Вывод
Вы узнали, как установить бесплатный SSL сертификат Let’s Encrypt для того, чтобы сделать безопасными соединения веб-сервера Apache.