Мы уже рассказывали, как получить бесплатный SSL-сертификат от сервиса Let's Encrypt. Сегодня они анонсировали поддержку бесплатных Wildcard сертификатов — событие, которого все давно ждали.
Wildcard SSL-сертификат отличается от обычного тем, что выдаётся не на одно доменное имя (например, ifmo.su), а сразу на группу поддоменов (*.ifmo.su). В эту группу входят example.ifmo.su, bot.ifmo.su и даже thisisdummydomain.ifmo.su, то есть на неограниченное количество вариантов.
Такие сертификаты существенно упрощают жизнь администратору. Теперь не нужно отдельно получать и обновлять сертификат для каждого поддомена — достаточно проделать всю процедуру один раз.
Подготовка
Для получения и установки Wildcard-сертификата мы будем использовать утилиту ACME.sh, которая уже из коробки поддерживает работу с Let's Encrypt.
Подключитесь по SSH к вашему серверу и выполните следующие команды:
curl https://get.acme.sh | sh
Вы увидите сообщение об успехе, а в вашей домашней директории появится папка .acme.sh
Получение сертификата
Перейдите в директорию .acme.sh и выполните следующую команду, заменив в ней адрес домена ifmo.su на ваш.
cd .acme.sh
./acme.sh --issue -d *.ifmo.su --dns
Acme.sh соединится с сервисом Let's Encrypt по протоколу ACMEv2 для получения заявки на сертификат. Вы увидите следующий результат.
В этом сообщении вам говорят, что необходимо создать в панели управления доменом TXT-запись для домена _acme-challenge.ifmo.su со значением Q1b4d3J9BwRqQ-Z3qlu6soL4YuF9BG1Y212QI3ie3K4.
Установка DNS-записей
Теперь вам нужно найти панель управления DNS-записями у вашего хостинг-провайдера и добавить туда требуемую запись.
Например, панель управления DNS нашего хостинга выглядит следующим образом:
После того, как вы добавите TXT-запись, выполните следующую команду
./acme.sh -d *.ifmo.su --renew
Сервис Let's Encrypt проверит TXT-запись и убедится, что вы действительно владелец домена. Результат не заставит себя ждать.
На экране будет указано, где расположены файлы сертификата. В нашем случае, это директория /root/.acme.sh/*.ifmo.su
Сертификат для основного домена
Важно отметить, что SSL-сертификат мы получили на все домены в зоне *.ifmo.su. Однако, на сам ifmo.su нужно выписывать отдельный сертификат. Для этого достаточно выполнить команду и повторить все операции.
./acme.sh --issue -d ifmo.su --dns
Можно было при регистрации Wildcard-сертификата указать сразу несколько доменов.
./acme.sh --issue -d *.ifmo.su -d ifmo.su --dns
Обратите внимание, что для подключения поддоменов, вы должны использовать верификацию через DNS и создавать TXT-записи.
Обычные же сертификаты на один домен можно получить другими более простыми способами. Подробнее читайте в нашей предыдущей статье и в официальной документации.
Другие клиенты
Существуют и другие утилиты, поддерживающие работу с Let's Encrypt. Например, с помощью certbot можно получить сертификат схожим образом:
./certbot-auto certonly --manual -d *.ifmo.su --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
На данный момент certbot поддерживает Wildcard сертификаты только в версии 0.22. Поэтому, необходимо устанавливать его напрямую из Git репозитория.
Проверяем в действии
Для примера создадим простейший Nginx-конфиг для всех доменов *.ifmo.su
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/ssl/ifmo.su.cer;
ssl_certificate_key /etc/ssl/ifmo.su.key;
server_name *.ifmo.su;
root /var/www/;
index index.html;
location ~ ^/(static) {
try_files $uri =404;
access_log off;
log_not_found off;
}
location / {
}
}
В данном примере мы скопировали ключи из /root/.acme.sh/*.ifmo.su/*.ifmo.su.cer в /etc/ssl/ifmo.su.cer и /root/.acme.sh/*.ifmo.su/*.ifmo.su.key в /etc/ssl/ifmo.su.key.
После этого вы сможете перейти на любой поддомен вашего сайта по протоколу HTTPS.
Подведём итоги
С помощью сервиса Let's Encrypt и утилит acme.sh или certbot можно легко и быстро получить бесплатный Wildcard SSL-сертификат для всех своих доменов и их поддоменов. Сертификат будет действителен в течение трёх месяцев, однако, его не составит труда обновить, действуя по нашей инструкции.