Как получить бесплатный Wildcard SSL-сертификат

5 min read

Мы уже рассказывали, как получить бесплатный 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 для получения заявки на сертификат. Вы увидите следующий результат.

Ответ сервиса по протоколу ACMEv2

В этом сообщении вам говорят, что необходимо создать в панели управления доменом TXT-запись для домена _acme-challenge.ifmo.su со значением Q1b4d3J9BwRqQ-Z3qlu6soL4YuF9BG1Y212QI3ie3K4.

Установка DNS-записей

Теперь вам нужно найти панель управления DNS-записями у вашего хостинг-провайдера и добавить туда требуемую запись.

Например, панель управления DNS нашего хостинга выглядит следующим образом:

Панель управления доменами Vscale

После того, как вы добавите 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-сертификат для всех своих доменов и их поддоменов. Сертификат будет действителен в течение трёх месяцев, однако, его не составит труда обновить, действуя по нашей инструкции.