Установка Let's Encrypt

Прикладной протокол передачи данных HTTPS, в отличие от HTTP, поддерживает шифрование данных. HTTPS – это HTTP + криптографический протокол TLS, реже более старый SSL. В случае HTTPS данные идут через порт 443 транспортного протокола TCP, а не порт 80.

Чтобы веб-сервер мог отправлять и получать данные по HTTPS на нем должен быть установлен сертификат с открытым ключом. Сертификат устанавливается для конкретного сервера.

Когда клиент устанавливает соединение с сервером, он получает копию открытого ключа. Запросы клиента расшифровываются с помощью закрытого ключа.

Let's Encrypt – это центр сертификации, выдающий бесплатные криптографические сертификаты.

При выдаче к запросившему сертификат веб-серверу, производится ряд запросов для подтверждения факта владения доменом. При этом происходит опрос записей DNS домена из множества географических мест.

Таким образом, сертификат можно установить только тогда, когда доменное имя уже привязано к IP или серверным именам (NS) вашего VPS.

Запросить, установить, настроить и перевыпустить сертификат Let's Encrypt можно с помощью программы-клиента certbot. Сертификат получают для веб-сервера – Apache или Nginx.

Certbot не установлен в Ubuntu по умолчанию. Кроме того, из-за активной разработки, версия в официальном репозитории скорее всего будет устаревшей. Поэтому сначала следует добавить в систему репозиторий, предоставляемый разработчиками certbot. После этого установить certbot для Apache:

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache

Certbot написан на Python, поэтому установочный пакет имеет такое имя.

Команда

sudo certbot --apache -d younglinux.info -d www.younglinux.info

запускает certbot с плагином --apache, ключи -d определяют имена доменов, для которых выпускается сертификат. Кроме этого, плагин --apache берёт на себя настройку Apache и перезагрузку конфигурации.

При установке сертификата certbot проверяет, действительно ли домен делегируется на данный сервер. Далее надо выбрать, перенаправлять ли http-трафик на https или не перенаправлять, а настроить потом перенаправление самостоятельно.

Выбор сертификата с редиректом на HTTPS и без

Если сайт размещается на движке (Drupal, WordPress), то сертификат бывает надежней ставить после развертывания сайта. При установке сертификата можно выбрать первый вариант, без редиректа http на https. Позже настроить редирект в файле .htaccess корневого каталога сайта.

В случае выбора пункта 2, в /etc/apache2/sites-available/ в конфигурационном файле для HTTP (порт 80) прописывается редирект на HTTPS.

Редирект на HTTPS в конфигурационном файле виртуального хоста

Если удалить его отсюда, то сайт должен стать доступным как по протоколу HTTPS, так и HTTP.

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

Сообщение об успешной установке сертификата Let's Encrypt

Сертификат Let's Encrypt надо обновлять каждые 90 дней. Программа certbot автоматизирует этот процесс, добавляя файл со скриптом обновления в /etc/cron.d/. Скрипт запускается раз в день и обновляет сертификаты, которые заканчиваются в ближайшие 30 дней.

Тест процесса обновления выполняется командой sudo certbot renew --dry-run.

Без опции --dry-run выполняется настоящее обновление сертификата.

При переносе сайта на новый сервер, выполняется команда выпуска, а не обновления сертификата.

Пример перенаправления на HTTPS в файле .htaccess корневого каталога сайта:

RewriteEngine On  
RewriteCond %{HTTPS} off  
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Отметим, если сайт раньше был доступен по протоколу HTTPS, при попытке открыть его на HTTP браузер будет перебрасывать на HTTPS из-за кэша. Поэтому при переносе сайта на новый хостинг тестирование работоспособности сайта на протоколе HTTP приходится выполнять в режиме инкогнито браузера.

Создано

Обновлено