Получение бесплатного SSL сертификата Let's Encrypt

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: Let's Encrypt, CentOS, Ubuntu

Процесс в данной статье описан на примере систем Linux CentOS, Ubuntu и Windows. Настройка выполняется в несколько шагов.

Условия получения бесплатного сертификата от Let's Encrypt

Прежде чем начать, необходимо знать о некоторых нюансах получения сертификата Let's Encrypt:

  • При запросе выполняется проверка домена. Для этого необходимо:
    1. либо создать TXT-запись в DNS.
    2. либо поднять веб-сервер, далее в его корне создается каталог .well-known, а в нем файл с произвольным названием. После корневой центр отправляет запрос серверу на загрузку данного файла и, в случае успеха, выдает сертификаты для указанного доменного имени.
  • SSL-сертификат выдается на 90 дней, поэтому необходимо по расписанию запускать команду на автоматическое продление ключа. Когда проходит 60 дней после начала использования нового сертификата, центр Let's Encrypt может выдать новый.
  • Если выполнять запрос для домена 3 уровня и выше, он должен пройти DNS проверку на всех уровнях. Например, домен layer3.layer2.com должен отвечать на запросы как для layer3.layer2.com, так и для layer2.com.
     

Проверка домена

Как было сказано выше, для получения бесплатного сертификата, Let's Encrypt должен удостовериться, что мы являемся владельцем домена. Свое право на его владение мы можем подтвердить, создав специальную TXT-запись или настроив веб-сервис, который будет отвечать на запросы.
 

С помощью записи в DNS

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

У нас должна быть возможность управления записями в DNS. На данном этапе достаточно просто зайти в панель управления DNS и перейти к этапу получения сертификата (ниже по тексту). Если домен новый и был только-что делегирован на DNS, возможно, придется подождать, пока он не станет доступен для всех серверов DNS в глобальной сети.
 

Настройка веб-сервера

Данный способ немного сложнее для Linux (для Windows все настройки делает утилита автоматически), но позволяет настроить автоматическое продление.

Запрашивать сертификат Let's Encrypt проще всего с веб-сервера, на котором запущен сайт для домена. Возможен альтернативный вариант с монтирование сетевой папки, но его рассматривать не будем.
 

Linux

Пример простого конфигурационного файла для NGINX:

server {
    listen       80;
    server_name  dmosk.ru;
    root   /usr/share/nginx/html;
}

* где dmosk.ru — домен, для которого работает сайт и для которого мы будем запрашивать сертификат; /usr/share/nginx/html — путь по умолчанию для nginx.

Если сервер уже используется для сайта, в секцию server добавляем:

location ~ /.well-known {
    root /usr/share/nginx/html;
    allow all;
}

* данными строчками мы говорим, что для всех запросов после /.well-known необходимо отдавать скрипты из каталога /usr/share/nginx/htmlallow all предоставляет доступ всем.

При необходимости выполнять проверку и использовать rewrite/return, добавляем что-то подобное:

    ...
    location ~ /.well-known {
        root /usr/share/nginx/html;
        allow all;
    }
    if ($uri !~ /.well-known){
        rewrite ^  https://...;
    }

После проверяем конфигурацию и перезапускаем nginx:

nginx -t

service nginx reload

Windows

IIS должен отвечать на http-запрос до доменному имени сайта. Дополнительная настройка не требуется.
 

Установка утилиты для получения сертификата

Certbot для Linux

На CentOS 6:

Создадим каталог, в котором будет храниться утилита и переходим в него:

mkdir /opt/certbot

cd /opt/certbot

Загружаем утилиту и разрешаем ее запуск:

wget https://dl.eff.org/certbot-auto

chmod a+x ./certbot-auto

Для удобства, делаем симлинк:

ln -s /opt/certbot/certbot-auto /opt/certbot/certbot

* при первом запуске certbot он автоматически предложит доустановить необходимые зависимости.

На CentOS 7:

yum install certbot

На Ubuntu:

apt-get install certbot

 

LetsEncrypt-Win-Simple для Windows

На сайте GitHub скачиваем win-acme. Раcпаковываем архив.
 

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

Linux

1. При подтверждении права на домен с TXT-записью:

certbot certonly --manual --agree-tos --email postmaster@dmosk.ru --preferred-challenges=dns -d dmosk.ru -d www.dmosk.ru

На запрос подтверждения отвечаем Y — система выдаст что-то на подобие:

Please deploy a DNS TXT record under the name
_acme-challenge.dmosk.ru with the following value:

W2SC9b88y2j2oUjhxVgS7Bphph9g5PqhkBq9KiWkLTm

Once this is deployed,

* Данное сообщение говорит, что мы должны создать TXT-запись _acme-challenge.dmosk.ru со значением W2SC9b88y2j2oUjhxVgS7Bphph9g5PqhkBq9KiWkLTm.

Создаем соответствующую запись в панели управления DNS, и в консоли сервера нажимаем Enter для продолжения. Если, как в данном примере, мы запрашиваем сертификат для нескольких узлов, повторяем действия.

2. Если мы подтверждаем право на домен при помощи веб-сервера, выполняем такую команду:

certbot certonly --webroot --agree-tos --email postmaster@dmosk.ru --webroot-path /usr/share/nginx/html/ -d dmosk.ru -d www.dmosk.ru


* где для двух команд:

  • certonly — запрос нового сертификата;
  • manual — проверка домена вручную.
  • preferred-challenges — указывает метод проверки домена.
  • webroot — проверка будет выполняться на основе запроса к корню сайта;
  • agree-tos — даем согласие на лицензионное соглашение;
  • email — почтовый адрес администратора домена;
  • webroot-path — каталог в системе Linux, который является корневым для сайта;
  • d — перечисление доменов, для которых запрашиваем сертификат.

После успешного выполнения команды, сертификаты будут созданы в каталоге /etc/letsencrypt/archive/dmosk.ru, а также симлинки на них в каталоге /etc/letsencrypt/live/dmosk.ru. При настройке приложений, стоит указывать пути до симлинков, так как при обновлении файлы в первом каталоге будут меняться, во втором — нет. Публичный ключ будет с именем cert.pem, а приватный — privkey.pem.
 

Windows

Открываем командную строку и переходим в распакованный каталог. Например, если архив распакован на диск C, выполняем:

cd C:\win-acme.v1.9.11.2

1.9.11.2 — моя версия утилиты.

letsencrypt.exe

Откроется меню с выбором действия — вводим N, чтобы создать новый сертификат:

Начальная меню win-acme

В следующем меню выбираем 4 для ввода домена:

Второе меню win-acme

Вручную вводим полное доменное имя сайта, для которого создаем сертификат.

Выбираем сайт в IIS, который отвечает на запросы нашего домена (в нашем случае, это единственный Default Web Site, то есть 1):

Начальная меню win-acme

Вводим email адрес и подтверждаем корректность введенных данных — утилита создаст необходимый каталог для проверки домена, запросит проверку, получит сертификат, добавит привязку к сайту по 443 порту с добавлением полученного сертификата и создаст в планировщике задание на автоматическое продление сертификата.
 

Автоматическое продление

Linux

Смотрим полный путь до скрипта certbot:

which certbot

Открываем на редактирование cron и добавляем следующее:

crontab -e

0 0 * * 1,4 /bin/certbot renew

* в данном примере проверка и продление сертификата будет выполняться по понедельникам и четвергам (1,4) в 00:00. /bin/certbot — путь, который мне выдала команда which certbot.

Команда certbot renew проверяет для всех наших сертификатов срок окончания, и если осталось менее 30 дней, запрашивает новый, сохраняет его в каталоге /etc/letsencrypt/archive/<домен> и обновляет симлинк.
 

Windows

Настройка задания на автоматическое продление создается при получении сертификата. Проверить задание можно в планировщике заданий Windows.

# Интернет # Безопасность # Windows # Ubuntu # Linux # CentOS
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет