Как получить бесплатный Wildcard SSL-сертификат  от сервиса Let's Encrypt для мультиподдомена (для всех возможных поддоменов) 

Wildcard SSL-сертификат отличается от обычного тем, что его можно выпустить сразу для всех поддоменов — *.domain.ru  (неограниченное количество)

1. Предварительно добавляем виртуальные хосты

<VirtualHost *:80>
  DocumentRoot /var/www/virtual/lk.my-domain.ru
  ServerName lk.my-domain.ru
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/virtual/my-domain.ru
  ServerName my-domain.ru
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/virtual/wildcard.my-domain.ru
  ServerName other.my-domain.ru
  ServerAlias *.my-domain.ru
</VirtualHost>


2. Выпускаем сертификат через certbot

certbot certonly --manual -d *.my-domain.ru  --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

3. Прописываем TXT запись в панели управления доменом - это регистратор домена, если домен не делегирован. Или панель хостинга, если домен на NS серверах перенесен. 
Проверяем, если все ок - жмем ENTER  

dig txt _acme-challenge.my-domain.ru

Если все сделано правильно, получим такой ответ 
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/my-domain.ru/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/my-domain.ru/privkey.pem
   Your cert will expire on 2021-03-19. 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"


4. Сертификаты получены. Теперь надо прописать их в виртуальных хостах
nano /etc/apache2/sites-available/wildcard.my-domain.ru.conf

   <VirtualHost *:80>
     DocumentRoot /var/www/vitrual/lk.my-domain.ru
     ServerName lk.my-domain.ru
   </VirtualHost>

   <VirtualHost *:80>
     DocumentRoot /var/www/vitrual/my-domain.ru
     ServerName my-domain.ru
   </VirtualHost>

   <VirtualHost *:80>
     DocumentRoot /var/www/vitrual/wildcard.my-domain.ru
     ServerName other.my-domain.ru
     ServerAlias *.my-domain.ru
   RewriteEngine on
   RewriteCond %{HTTPS} !=on
   RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
   </VirtualHost>

   <VirtualHost *:443>
     DocumentRoot /var/www/vitrual/wildcard.my-domain.ru
     ServerName other.my-domain.ru
     ServerAlias *.my-domain.ru

   SSLEngine on
      SSLCertificateFile /etc/letsencrypt/live/my-domain.ru/fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/my-domain.ru/privkey.pem
   </VirtualHost>


5. Добавляем сайт и перезагружаем апач. Можно сделать проверку конфига

sudo apache2ctl configtest
a2ensite wildcard.my-domain.ru.conf
sudo serice apache2 restart

 


Не проверено 
===========================================================
1. С помощью ACME.sh

git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install
Вы увидите сообщение об успехе, а в вашей домашней директории появится папка .acme.sh

1 Делаем запрос

 cd ~/.acme.sh

./acme.sh --issue --dns -d *.my-second-domain.ru \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please
Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Please add those txt records to the domains. Waiting for the dns to take effect.

dig txt _acme-challenge.my-second-domain.ru

3

./acme.sh --renew -d *.my-second-domain.ru \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please


./acme.sh  --issue -d *.my-second-domain.ru

--dns  --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew


Acme.sh соединится с сервисом Let's Encrypt по протоколу ACMEv2 для получения заявки на сертификат.

curl -IkL -m20 http://my-second-domain.ru