
Wildcard сертификат — это SSL-сертификат, выпущенный на имя со звёздочкой, например *.example.com: он защищает все поддомены одного уровня — www, api, shop и любые новые — одним ключом и одним файлом. Сам example.com и имена вида a.b.example.com в него не входят, их добавляют отдельно.
Что такое wildcard-сертификат простыми словами
Обычный сертификат перечисляет конкретные имена сайтов. Wildcard SSL сертификат вместо списка содержит шаблон: звёздочка в самой левой части имени означает «любое одно слово на этом месте». Поэтому вместо покупки отдельных сертификатов для www.example.com, api.example.com и app.example.com достаточно одного *.example.com — он покроет их все, а также поддомены, которые вы создадите завтра.
В русскоязычных поисковых запросах встречается написание «вайлдкард» или «вилдкард» — это одно и то же. Не путайте его с wildcard DNS-записью: запись со звёздочкой в DNS направляет любые поддомены на один адрес, а сертификат со звёздочкой отвечает только за шифрование. Они часто работают в паре, но настраиваются независимо — подробнее в статье о wildcard DNS-записях.
Какие поддомены покрывает wildcard: только один уровень
Правило сопоставления имён закреплено в RFC 9525 и требованиях CA/Browser Forum: звёздочка допускается только в самой левой метке и заменяет ровно одну метку — без точек внутри. Для сертификата *.example.com это выглядит так:
| Имя | Покрывается *.example.com? | Почему |
|---|---|---|
www.example.com | Да | Одна метка на месте звёздочки |
api.example.com | Да | То же |
anything.example.com | Да | Любое имя первого уровня |
example.com | Нет | На месте звёздочки пусто; базовый домен добавляют в SAN (многие УЦ делают это автоматически) |
sub.api.example.com | Нет | Две метки вместо одной — нужен отдельный *.api.example.com |
example.org | Нет | Другой домен |
Если браузер открывает имя, которое сертификат не покрывает, Chrome показывает NET::ERR_CERT_COMMON_NAME_INVALID, Firefox — SSL_ERROR_BAD_CERT_DOMAIN. Это самая частая ошибка после перехода на wildcard: кто-то завёл dev.shop.example.com и ожидал, что «звёздочка покроет всё».
Wildcard и SAN-сертификат: в чём разница
Альтернатива wildcard — мультидоменный SAN-сертификат, в котором перечислены конкретные имена, в том числе из разных доменов. Можно и совмещать: один сертификат с именами example.com, *.example.com и *.api.example.com. Подробный разбор сценариев — в статье Wildcard vs SAN-сертификат.
| Аспект | Wildcard | SAN (мультидомен) | Отдельные сертификаты |
|---|---|---|---|
| Покрытие | Все поддомены одного уровня одного домена | Только перечисленные имена, можно разные домены | Одно имя (или имя + www) |
| Новый поддомен | Работает сразу, перевыпуск не нужен | Нужен перевыпуск с новым списком | Нужен новый сертификат |
| Управление | Один сертификат | Один сертификат | Несколько, у каждого свой срок |
| Безопасность | Компрометация ключа затрагивает все поддомены | Затрагивает все перечисленные имена | Изолировано |
| Отзыв | Для всех поддоменов сразу | Для всех имён сразу | По отдельности |
| Тип проверки | DV или OV | DV, OV или EV | DV, OV или EV |
| Видно в CT-логах | Только *.example.com — внутренние имена не раскрываются | Все имена списком | Каждое имя |
Последняя строка часто решает выбор: все публичные сертификаты попадают в журналы Certificate Transparency, и имена вроде staging-crm.example.com из SAN-сертификата видит кто угодно. Wildcard раскрывает только домен. Как искать свои сертификаты в журналах — в статье о Certificate Transparency.
Wildcard-сертификат DV, OV и почему не бывает EV
Wildcard SSL-сертификат выпускается с проверкой домена (DV) или организации (OV). Правила CA/Browser Forum для EV-сертификатов запрещают звёздочку в имени, поэтому EV wildcard не существует: если нужна EV-проверка, берут SAN-сертификат с явным списком имён. Разница между уровнями проверки описана в статье о типах SSL-сертификатов. Шифрование у DV и OV одинаковое, отличается только то, что проверил УЦ перед выпуском.
Бесплатный wildcard-сертификат Let's Encrypt
Let's Encrypt выдаёт бесплатные wildcard-сертификаты с 2018 года по протоколу ACME v2. Главное условие — проверка DNS-01: владение доменом подтверждается TXT-записью _acme-challenge.example.com, проверка через HTTP для звёздочки не принимается. Срок действия — 90 дней, поэтому продление должно быть автоматическим. Общая установка certbot описана в статье о бесплатном SSL через Let's Encrypt, здесь — только то, что специфично для wildcard.
Вариант 1: certbot с DNS-плагином (автопродление)
Если DNS домена обслуживает провайдер с API (Cloudflare, Route 53, DigitalOcean и другие), certbot сам создаёт и удаляет TXT-запись. Пример для Cloudflare на Debian/Ubuntu:
sudo apt install certbot python3-certbot-dns-cloudflare
# /etc/letsencrypt/cloudflare.ini — токен с правом Zone:DNS:Edit
dns_cloudflare_api_token = ВАШ_ТОКЕН
sudo chmod 600 /etc/letsencrypt/cloudflare.ini
sudo certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d example.com -d '*.example.com'
Звёздочку берите в кавычки, иначе shell может раскрыть её в имена файлов текущего каталога. Список поддерживаемых провайдеров — в документации certbot по DNS-плагинам. Проверить продление заранее: sudo certbot renew --dry-run.
Вариант 2: acme.sh
acme.sh — скрипт на shell без зависимостей от Python, поддерживает API большого числа DNS-провайдеров. Для Cloudflare:
export CF_Token="ВАШ_ТОКЕН"
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
Токен сохраняется в конфигурации acme.sh, и продление по cron проходит без участия человека.
Вариант 3: вручную, если у DNS-провайдера нет API
sudo certbot certonly --manual --preferred-challenges dns \
-d example.com -d '*.example.com'
certbot выдаст значение TXT-записи для _acme-challenge.example.com. При запросе на example.com и *.example.com значений будет два, и обе записи должны существовать одновременно под одним именем — не заменяйте первую второй. Перед нажатием Enter убедитесь, что запись видна снаружи:
# Linux / macOS
dig TXT _acme-challenge.example.com +short
# Windows
nslookup -type=TXT _acme-challenge.example.com 8.8.8.8
Ручной выпуск сам не продлится: через 90 дней процедуру придётся повторить. Для постоянной работы переходите на плагин или acme.sh — либо переносите DNS к провайдеру с API. Если продление перестало работать, проверьте журнал /var/log/letsencrypt/letsencrypt.log.
CAA-записи и wildcard
Если у домена есть CAA-записи, для выпуска wildcard учитывается тег issuewild (RFC 8659): когда он задан, он главнее issue. Типичная ловушка — 0 issuewild ";", оставшаяся от старой настройки, которая запрещает wildcard любому УЦ. Разрешение для Let's Encrypt: example.com. CAA 0 issuewild "letsencrypt.org". Подробнее — в статье о CAA-записи.
Как получить и где купить платный wildcard SSL-сертификат
Платный wildcard имеет смысл, когда нужна OV-проверка, более длинный цикл замены вручную или сервер, где ACME-автоматизацию поставить нельзя. Порядок одинаков у всех продавцов:
- Сгенерируйте ключ и запрос на подпись (CSR), в поле CN укажите имя со звёздочкой:
openssl req -new -newkey rsa:2048 -nodes \ -keyout wildcard.key -out wildcard.csr \ -subj "/CN=*.example.com" - Оформите заказ у регистратора или реселлера и вставьте содержимое
wildcard.csr. - Пройдите проверку: для wildcard DV обычно это TXT- или CNAME-запись в DNS либо письмо на административный адрес домена (
admin@,webmaster@и т. п.); для OV дополнительно проверяют документы организации. - Получите сертификат и промежуточную цепочку, установите их вместе с ключом. Без промежуточного сертификата часть клиентов покажет ошибку.
Популярный бюджетный вариант — AlphaSSL Wildcard: это DV-линейка GlobalSign, которую продают российские регистраторы. Базовый домен у таких продуктов, как правило, добавляется в сертификат автоматически, но это стоит уточнить у продавца до оплаты. Также уточните, выпускает ли выбранный УЦ сертификаты для вашей доменной зоны: после 2022 года часть зарубежных удостоверяющих центров ограничила выдачу для доменов .ru и .рф.
Wildcard-сертификат Минцифры
Национальный удостоверяющий центр Минцифры выдаёт сертификаты юрлицам бесплатно через Госуслуги. Им доверяют браузеры и системы, где установлен корневой сертификат Russian Trusted Root CA (например, Яндекс Браузер); Chrome, Firefox и Safari в стандартной поставке такой сертификат не признают. Поддерживается ли звёздочка в конкретной заявке — проверяйте в актуальной форме на Госуслугах перед подачей. Российский сертификат обычно ставят вторым, параллельно с сертификатом международного УЦ, а не вместо него. Подробности об установке корня и цепочке — в статье о российских SSL-сертификатах.
Для задачи «бесплатный wildcard ACME в России» ограничений нет: Let's Encrypt выдаёт сертификаты для доменов .ru и .рф, а DNS-01 работает с любым DNS-провайдером, у которого есть API.
Когда использовать wildcard
- Много поддоменов: их больше нескольких и они регулярно добавляются.
- Динамические поддомены: SaaS-платформы с поддоменом для каждого клиента (
client1.app.example.com— тогда нужен*.app.example.com). - Dev-окружения: dev, staging, test, preview-стенды на каждую ветку.
- Скрытие внутренних имён из журналов Certificate Transparency.
- Упрощение управления: один срок действия и одно продление вместо десятка.
Когда НЕ использовать
- Мало поддоменов: два-три имени не оправдывают компромисс по безопасности — проще выпустить отдельные сертификаты или SAN.
- Разные серверы и подрядчики: каждому серверу нужен приватный ключ, и чем больше копий, тем шире поверхность атаки.
- Нужен EV: EV wildcard не выпускаются.
- Многоуровневые поддомены:
*.example.comне покроетsub.api.example.com.
Безопасность wildcard SSL
- Распространение ключа: каждый сервер с wildcard хранит один и тот же приватный ключ. Утечка с самого слабого сервера (например, забытого тестового) компрометирует продакшн.
- Радиус поражения: компрометация ключа затрагивает ВСЕ поддомены, а отзыв сертификата ломает их все одновременно.
- Захват поддомена: если поддомен больше не используется, а DNS всё ещё указывает на удалённый сервис (облачное хранилище, PaaS), атакующий может занять этот ресурс. Wildcard здесь не причина, но и не защита — чистите висящие DNS-записи.
- Токены DNS API: токен для DNS-01 даёт право менять записи зоны. Выдавайте токен с доступом только к нужной зоне и храните файл с правами
600.
Советы по настройке
- Включите базовый домен: запрашивайте и
example.com, и*.example.comв одном сертификате. - Автоматизируйте обновление через DNS-валидацию — 90-дневный срок Let's Encrypt не оставляет места для ручной работы.
- Минимизируйте распространение ключа: терминируйте TLS на реверс-прокси или балансировщике, а внутренние сервисы держите за ним.
- Мониторьте Certificate Transparency: следите за неожиданными сертификатами на свой домен.
- План на компрометацию: знайте заранее, как быстро отозвать и перевыпустить сертификат и разложить новый ключ по серверам.
Пример nginx-блока, где один wildcard обслуживает все поддомены (пути certbot по умолчанию):
server {
listen 443 ssl;
server_name example.com *.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
Для IIS и других программ на Windows сертификат нужен в формате PFX — его собирают из ключа и цепочки:
openssl pkcs12 -export -out wildcard.pfx \
-inkey privkey.pem -in fullchain.pem
Как проверить wildcard-сертификат
После установки проверьте несколько поддоменов, а не только www: сертификат может стоять на одном виртуальном хосте и отсутствовать на другом.
- Проверка SSL-сертификата показывает имена из поля SAN (должны быть
*.example.comи, если нужно,example.com), срок действия, цепочку и поддерживаемые версии TLS. - DNS-проверка пригодится при выпуске: убедитесь, что TXT-запись
_acme-challengeи CAA-записи видны снаружи. - Мониторинг с проверкой SSL предупредит об истечении срока, если автопродление тихо сломалось.
Из командной строки (OpenSSL 1.1.1 и новее):
openssl s_client -connect api.example.com:443 -servername api.example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -enddate -ext subjectAltName
Заключение
Wildcard-сертификаты — удобный инструмент для множества поддоменов: один выпуск, одно продление, новые поддомены работают сразу. Цена удобства — общий ключ для всех имён и покрытие только одного уровня. Бесплатный вариант даёт Let's Encrypt через DNS-01, платный нужен для OV-проверки. Используйте wildcard при динамических или многочисленных поддоменах и держите приватный ключ на минимуме серверов.
Частые вопросы
Покрывает ли wildcard основной домен example.com?
Нет, звёздочка требует одну метку перед доменом. Базовый домен добавляют в сертификат вторым именем: в Let's Encrypt — вторым флагом -d example.com, у платных продуктов его часто включают автоматически.
Можно ли выпустить сертификат *.*.example.com?
Нет, звёздочка допускается только в самой левой метке и только одна. Для второго уровня выпускают отдельный *.api.example.com или добавляют его в тот же сертификат как SAN.
Почему Let's Encrypt не выдаёт wildcard через HTTP-проверку?
Для имени со звёздочкой Let's Encrypt принимает только DNS-01: нельзя положить файл на «все поддомены сразу», а TXT-запись доказывает контроль над всей зоной.
Бывает ли EV wildcard?
Нет, правила CA/Browser Forum запрещают звёздочку в EV-сертификатах. Доступны DV и OV wildcard; для EV нужен сертификат с явным списком имён.
Нужен ли отдельный сертификат для www?
Нет, www.example.com — поддомен первого уровня и покрывается *.example.com.
Можно ли установить один wildcard на несколько серверов?
Технически да — копируется сертификат и ключ. Но каждая копия ключа — дополнительная точка утечки, поэтому лучше терминировать TLS на одном прокси или балансировщике.