Проверка SSL-сертификатов Let’s Encrypt®

Чтобы ваш сайт был доступен по HTTPS, вы можете использовать SSL-сертификат, например бесплатный сертификат от Центра Сертификации Let’s Encrypt®.

Сертификаты Let’s Encrypt® действительны в течение 90 дней с момента выпуска. Для выпуска сертификата нужно подтвердить право на доменное имя — пройти проверку. Каждые 60 дней сертификаты нужно обновлять и также проходить проверку.

Доступно два типа проверок: HTTP (через размещение файла на сервере) и DNS (через TXT-запись). В инструкции рассматривается проверка DNS-01.

Если ваше доменное имя делегировано на NS-серверы Selectel (Selectel является вашим DNS-провайдером), вы можете подтвердить право на домен с помощью услуги DNS-хостинг. Selectel предоставляет API управления DNS-записями, которое можно использовать для автоматизации перевыпуска сертификатов.

Как работает проверка домена через DNS-01

Проверка DNS-01 требует подтверждения права на домен с помощью специальной TXT-записи для доменного имени. Проверка DNS-01 разрешает выпускать Wildcard-сертификаты.

Со стороны Let’s Encrypt® передаётся токен ACME-клиенту. ACME-клиент создаёт содержимое TXT-записи на основе токена и ключа аккаунта вида:

_acme-challenge.yourdomain.com TXT <token>

Затем Let’s Encrypt запрашивает TXT-запись в DNS-зоне доменного имени. Если запись добавлена, и значения совпадут — сертификат будет выпущен.

Примеры скриптов, которые можно использовать для автоматизации перевыпуска сертификатов по протоколу DNS-01, работающих с DNS API Selectel:

Обратите внимание! Скрипты следует запускать не реже, чем раз в 90 дней, предпочтительнее — раз в 60 дней.

Можно также выполнить ручной выпуск и обновление сертификата — при этом будет требоваться ручной ввод TXT-записи в панели управления. Примечание: предпочтительнее использовать DNS API.

Автоматический выпуск сертификата с помощью acme.sh

Чтобы автоматически выпустить сертификат с помощью acme.sh:

  1. Установите acme.sh.
  2. Получите ключ API.
  3. Передайте ключ API в переменную SL_Key:

    export SL_Key="<token>"
  4. Выпустите сертификат:

    acme.sh --issue --dns dns_selectel -d yourdomain.com -d www.yourdomain.com

    Значение SL_Key будет сохранено в папке ~/.acme.sh/account.conf

Автоматический выпуск сертификата с помощью lego

Чтобы автоматически выпустить сертификат с помощью lego:

  1. Установите lego.
  2. Получите ключ API.
  3. Передайте ключ API в переменную SELECTEL_API_TOKEN:

    export SELECTEL_API_TOKEN=<token>
  4. Выпустите сертификат:

    lego --email email@yourdomain.com --dns selectel --domains yourdomain.com run

Автоматический выпуск сертификата с помощью dehydrated

Чтобы автоматически выпустить сертификат с помощью dehydrated:

  1. Получите ключ API.
  2. Передайте ключ API в переменную SELECTEL_TOKEN:

    export SELECTEL_TOKEN=<token>
  3. Выпустите сертификат, запустив скрипт hook.sh.

Ручной выпуск сертификата с помощью acme.sh

При ручном выпуске сертификата нужно добавить TXT-запись в панели управления. При обновлении сертификата запись также нужно обновлять вручную.

  1. Выпустите сертификат:

    acme.sh --issue -d yourdomain.com --dns \
    --yes-I-know-dns-manual-mode-enough-go-ahead-please
  2. Добавьте TXT-запись в панели управления. Этот шаг обязателен каждый раз, когда вы обновляете сертификат.

  3. Подождите около минуты, чтобы записи DNS обновились. Затем введите команду:

    acme.sh --renew -d yourdomain.com \
    --yes-I-know-dns-manual-mode-enough-go-ahead-please