wildcard SSL сертификат подходит для доменного имени и всех поддоменов. Одни и те же файлы сертификата, цепочки доверия и приватного ключа могут быть прописаны в виртуальных хостах неограниченного количества сайтов на разных машинах.
Wildcard SSL сертификат Let's Encrypt на Ubuntu 18
Wildcard SSL сертификат от Let's Encrypt можно выпустить установив на сервере стандартный клиент Certbot.
Для таких систем как Debian 9 и Ubuntu 18 на официальном сайте заявлено, что возможность выпуска сертификатов для всех поддоменов отсутствует. На практике никаких проблем не наблюдается.
В примере используется плагин Apache. Сертификаты генерируются для одноименного веб-сервера.
Убедимся в том, что используется Apache — имя веб-сервера ожидаем увидеть в выводе
netstat -nltp | grep 443
Или для порта 80 если ни одного сертификата еще нет:
netstat -nltp | grep 80
Обновляем список репозиториев
apt-get update
Устанавливаем пакет add-apt-repository, который нужен для добавления репозиториев ppa из командной строки
apt-get install software-properties-common
Теперь можно добавить репозиторий
add-apt-repository ppa:certbot/certbot
This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu(s).
More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
ENTER
Снова обновляем информацию
apt-get update
И устанавливаем клиент
apt install certbot
certbot certonly —manual -d *.example.com —agree-tos —no-bootstrap —manual-public-ip-logging-ok —preferred-challenges dns-01 —server https://acme-v02.api.letsencrypt.org/directory
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]
Далее certbot запросит согласие присылать письма с новостями, можно ответить Yes. Слишком часто подобные сообщения не приходят.
Поскольку в строке запроса указан метод валидации — DNS будет предложено добавить для домена DNS запись типа TXT.
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
spl5wSHiFuHXMyKR65qaWQLREmRv_KKSuwaV4bxleTs
Добавление и проверка DNS записи
Запись добавляется в личном кабинете компании, предоставляющей хостинг DNS для домена. Подтвердить, что запись добавлена нужно нажав ENTER. Предварительно стоит убедиться в том, что отдается верное значение при помощи dig.
dig _acme-challenge.example.com txt +short
«spl5wSHiFuHXMyKR65qaWQLREmRv_KKSuwaV4bxleTs»
Если никаких ошибок не произошло сертификат будет выпущен:
IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-12-14. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
«certbot renew»
В последней строке можно увидеть, что продлевается сертификат при выполнении certbot renew
Не трогая сертификат можно проверить завершится ли процесс успешно (в день выпуска сертификата проверить этого нельзя)
certbot renew —dry-run
В случае возникновения ошибок можно посмотреть информацию в логе
tail /var/log/letsencrypt/letsencrypt.log
Иногда обращения к серверам letsencrypt.org завершаются закрытием соединения со стороны последних, поэтому команду может потребоваться выполнить дважды. По этой же причине продление (по CRON) лучше выполнять не раз в три месяца, а минимум 4-6 раз.
Про установку SSL сертификата на Apache.