Как получить бесплатный 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.
2
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