❗ Вебсайт в стадии бета-тестирования. Возможны ошибки.

Сертифицировать вебсайт

Let’s Encrypt выдаёт сертификаты через автоматизированный API на основе протокола ACME. Для взаимодействия с API и получения сертификата необходимо установить один из клиентом ACME.

Существует два способа получения сертификата:

  • купить у регистратора домена или провайдера хостинга;
  • получить самостоятельно.

Если вы предпочитаете купить сертификат у регистратора домена или провайдера хостинга, открывайте официальный сайт и ищите сведения о том, сколько стоит услуга и как её получить.

Ниже опишу самостоятельный порядок получения сертификата.

Логотип Let’s Encrypt

Логотип Let’s Encrypt

Клиенты сертификации

Существует большое количество клиентов и библиотек, поддерживающих протокол ACMEv2 API (RFC 8555). Полный перечень клиентов доступен на официальном сайте Let’s Encrypt.

Я опишу самый простой способ получения сертификата с помощью клиента Certbot.

Порядок действий

Войти на сервер провайдера

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

Используйте клиент SSH и войдите на сервер провайдера.

Развернуть вебсайт без сертификата

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

Для этого следует:

  1. Скопировать файлы вебсайта на сервер провайдера.
  2. Разместить файлы в каталоге, доступном для вебсервера. Например, для вебсервера nginx файлы помещают в каталог /var/www/.
  3. В настройках вебсервера указать путь к каталогу вашего вебсайта.
  4. Перезапустить вебсервер и проверить в браузере доступ к вебсайту.

Собрать сведения для сертификации

В процессе сертификации нужны сведения:

  • о выбранном вами вебсервере (например, Nginx, Apache, HAProxy, Plesk);
  • об операционной системе сервера провайдера (например, Linux, Windows, macOS, FreeBSD, OpenBSD);
  • о домене вебсайта;
  • о почтовом адресе администратора вебсайта.

Учтите!

Следует принять решение об основном написании домена (c www или без www). Например, www.example,ru и example.ru это два разных вебсайта и для каждого нужно получить сертификат.

Установить клиент Certbot

Пользователям операционных систем GNU/Linux доступны три варианта установки:

  • из дистрибутива операционной системы;
  • из репозитория snap;
  • из репозитория pip.

Для предотвращения конфликта приложений удалите установленные клиенты certbot. Пример для распространённых версий операционных систем:

sudo apt remove certbot
    или
sudo dnf remove certbot
    или
sudo yum remove certbot

Установить клиент Certbot из дистрибутива Debian/Ubuntu

Пример установки клиента из репозитория операционной системы Debian/Ubuntu:

sudo apt install certbot

Установить клиент Certbot из репозитория snap

Пример установки клиента из репозитория snap для дистрибутивов Debian/Ubuntu:

sudo apt install snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Дополнительные сведения

Для других дистрибутивов Linux документацию по установке можно найти на официальном сайте Canonical.

Установить клиент Certbot из репозитория pip

У каждого уважающего себя почитателя языка Python уже установлены все нужные пакеты. Проверьте:

Debian, Ubuntu
sudo apt install python3 python3-dev python3-venv libaugeas-dev gcc

или

Fedora, CentOS
sudo dnf install python3 python-devel augeas-devel gcc

Настроить переменные окружения и установить pip:

sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip

Наконец, можно установить клиент Certbot:

sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

Получить сертификат

Клиент Certbot установлен можно приступить к выпуску сертификата:

sudo certbot --nginx

В ходе сертификации будут заданы вопросы, на которые вы уже подготовили ответы на шаге 3.

Проверить автоматическое обновление

Центр сертификации (Certificate Authority) Let’s Encrypt постоянно сокращает срок действия сертификата. Ещё пару лет назад сертификат действовал год. В настоящее время — только 45 дней. В дальнейшем период будут и дальше сокращать. Объявлено что в 2028-м году действие сертификата составит всего 7 часов.

Помнить о дате окончания действия очередного сертификата, а затем вручную обновлять его — крайне утомительное занятие. К счастью, процесс возможно автоматизировать.

Не сомневаюсь, что на вашем сервере запущен процесс cron или подобный systemd таймер. Загляните в один из следующих каталогов:

  • /etc/crontab/
  • /etc/cron./
  • systemctl list-timers

Проверьте настройки автоматического обновления сертификата. Запустите команду:

sudo certbot renew --dry-run

Данная команда на самом деле ничего не изменяет в настройках и не инициирует обновление сертификата. Она лишь имитирует обновление и, тем самым, проверяет работоспособность. Если в результате команда выдаст сообщение: “Congratulations, all simulated renewals succeeded”, значит автоматическое обновление сертификата нормально настроено.

Проверить действие сертификата

Сертификат установлен и все настройки выполнены.

  1. Откройте браузер.
  2. Наберите адрес URL вашего вебсайта, указав протокол HTTPS: https://www.домен-вашего-сайта.рф
  3. Сертификат получен и установлен правильно, если:
    • ваш вебсайт нормально отображён браузером;
    • в адресной строке есть пиктограмма замка;
    • в начале адрес начинается с https://.