16 октября 2018 г. Nginx SSL HTTPS TLS Ubuntu

Получаем бесплатный SSL/TLS-сертификат от Let's Encrypt и настраиваем Nginx

Сегодня расскажу как получить бесплатный SSL/TLS-сертификат от Let's Encrypt для своих сайтов под Nginx с помощью ACME клиента certbot (программа для получения и обновления сертификата от Let's Encrypt).

Проект Let’s Encrypt создан для того, чтобы большая часть интернет-сайтов смогла перейти к шифрованным подключениям (HTTPS). В отличие от коммерческих центров сертификации, в данном проекте не требуется оплата... продолжить читать на Википедии

Установка зависимостей

Установим certbot и плагин для Nginx, чтобы он сам настроил нужные хосты в Nginx:

apt install certbot python3-certbot-nginx

Получаем сертификат для одного домена

Вызываем certbot и передаем ему информацию для генерации сертификата:

certbot --nginx -n --agree-tos -m <Ваш Email> -d <Ваше Доменное Имя>

где:

  • --nginx - Заставляет плагин для Nginx перенастраивать хосты в конфигах Nginx (указывает пути до сертификатов, если нет секции для ssl, то создаст их для указанного домена)
  • -n - Не интерактивный режим, чаще используется для вставки в скрипты деплоя
  • --agree-tos - Согласие с ACME server's Subscriber Agreement (ToS - Terms of service)
  • -m - Ваш Email
  • -d - Ваше доменное имя

Пример:

certbot --nginx -n --agree-tos -m example@example.org -d example.com
certbot --nginx -n --agree-tos -m example@example.org -d or.sub.domain.example.com

Подтверждение прав на домен

Теперь вам необходимо подтвердить права на указанное доменное имя. Для этого можно создать location в конфиге Nginx:

server {
    server_name <Ваше Доменное Имя>;
    location ~* ^/\.well-known/acme-challenge/<AUTH TOKEN BY CERTBOT>/$ {
        return 200;
    }
}

Либо создать TXT-запись для домена, что более удобно:

_acme-challenge.<Ваше Доменное Имя>.  IN TXT "<AUTH TOKEN BY CERTBOT>"

Пример:

_acme-challenge.example.org.   IN TXT "4sV67H271Eil3VHA-9TuXjANP6cP_uXmyJoTInalPaY"

Некоторые подробности можно посмотреть на ServerFault

Получаем Wildcard-сертификат

Если у вас много поддоменов, то проще получить Wildcard-сертификат (на все поддомены), эта возможность появилась у Let’s Encrypt весной 2018 года.

certbot certonly --preferred-challenges=dns --agree-tos -m <Ваш Email> -d *.<Ваше Доменное Имя> -d <Ваше Доменное Имя> --manual --server https://acme-v02.api.letsencrypt.org/directory

где:

  • certonly - Получить только сертификат (но не устанавливать/применять его)
  • --preferred-challenges - Подтверждение прав на домен удобнее проводить через DNS
  • --agree-tos - Согласие с ACME server's Subscriber Agreement (ToS - Terms of service)
  • -m - Ваш Email
  • -d - Ваше доменное имя с префиксом "*."
  • -d - Сразу следом указываем каноническое имя домена, если вы им пользуетесь
  • --manual - Получить сертификат вручную (без помощи плагина для nginx)
  • --server - Для Wildcard надо указать endpoint (возможные можно посмотреть тут)

Пример:

certbot --nginx --preferred-challenges=dns --agree-tos -m example@example.org -d *.example.org --server https://acme-v02.api.letsencrypt.org/directory

Посмотреть список полученных сертификатов

После ввода команды:

certbot certificates

можно посмотреть список полученных сертификатов и срок их инвалидации

Комментарии

Оставьте свой комментарий

Markdown