Lets Encrypt Wildcard SSL вручную
Wildcard сертификат выдаётся на поддомены (*.tyapk.ru), например example.tyapk.ru, forum.tyapk.ru, www.tyapk.ru и все остальные, но не включает сам домен tyapk.ru. Очевидное преимущество в том, что не нужно выпускать отдельные сертификаты для отдельных поддоменов.
Рассматривается ручной выпуск SSL сертификата от Lets Encrypt, который выдаётся на 3 месяца. Соответственно продлением требуется заниматься не реже 4 раз в год. Прежде всего требуется пакет openssl
yum update -y
yum install -y openssl
Для установки Wildcard-сертификата используется утилита ACME.sh
[root@a home]# curl https://get.acme.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 754 0 754 0 0 1979 0 --:--:-- --:--:-- --:--:-- 1984
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 191k 100 191k 0 0 254k 0 --:--:-- --:--:-- --:--:-- 257k
[Ср янв 22 07:25:34 UTC 2020] Installing from online archive.
[Ср янв 22 07:25:34 UTC 2020] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz
[Ср янв 22 07:25:36 UTC 2020] Extracting master.tar.gz
[Ср янв 22 07:25:36 UTC 2020] It is recommended to install socat first.
[Ср янв 22 07:25:36 UTC 2020] We use socat for standalone server if you use standalone mode.
[Ср янв 22 07:25:36 UTC 2020] If you dont use standalone mode, just ignore this warning.
[Ср янв 22 07:25:36 UTC 2020] Installing to /root/.acme.sh
[Ср янв 22 07:25:36 UTC 2020] Installed to /root/.acme.sh/acme.sh
[Ср янв 22 07:25:36 UTC 2020] Installing alias to '/root/.bashrc'
[Ср янв 22 07:25:36 UTC 2020] OK, Close and reopen your terminal to start using acme.sh
[Ср янв 22 07:25:36 UTC 2020] Installing alias to '/root/.cshrc'
[Ср янв 22 07:25:36 UTC 2020] Installing alias to '/root/.tcshrc'
[Ср янв 22 07:25:36 UTC 2020] Installing cron job
no crontab for root
no crontab for root
[Ср янв 22 07:25:36 UTC 2020] Good, bash is found, so change the shebang to use bash as preferred.
[Ср янв 22 07:25:37 UTC 2020] OK
[Ср янв 22 07:25:37 UTC 2020] Install success!
Перейдите в указанную установщиков директорию .acme.sh
и выполните следующую команду ./acme.sh --issue -d platform.vepp.ml -d '*.platform.vepp.ml' --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
на выпуск 2 сертификатов:
- основного домена platform.vepp.ml
- поддоменов основного домена *.platform.vepp.ml
cd /root/.acme.sh
[root@a .acme.sh]# ./acme.sh --issue -d platform.vepp.ml -d '*.platform.vepp.ml' --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
[Ср янв 22 07:37:50 UTC 2020] Single domain='*.platform.vepp.ml'
[Ср янв 22 07:37:50 UTC 2020] Getting domain auth token for each domain
[Ср янв 22 07:37:53 UTC 2020] Getting webroot for domain='*.platform.vepp.ml'
[Ср янв 22 07:37:53 UTC 2020] Add the following TXT record:
[Ср янв 22 07:37:53 UTC 2020] Domain: '_acme-challenge.platform.vepp.ml'
[Ср янв 22 07:37:53 UTC 2020] TXT value: 'sUktgV6JfX3XN32S-puWfmjMPoOEpCOdDPhuAKp7mOA'
[Ср янв 22 07:37:53 UTC 2020] Please be aware that you prepend _acme-challenge. before your domain
[Ср янв 22 07:37:53 UTC 2020] so the resulting subdomain will be: _acme-challenge.platform.vepp.ml
[Ср янв 22 07:37:53 UTC 2020] Please add the TXT records to the domains, and re-run with --renew.
[Ср янв 22 07:37:53 UTC 2020] Please add '--debug' or '--log' to check more details.
[Ср янв 22 07:37:53 UTC 2020] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh
Далее требуется прописать предложенную TXT запись _acme-challenge.platform.vepp.ml
со значением sUktgV6JfX3XN32S-puWfmjMPoOEpCOdDPhuAKp7mOA
у регистратора для подтверждения прав.
После необходимо выполнить команду перевыпуска, заменив в оригинальной команде выпуска ключ --issue
на --renew
.
[root@a .acme.sh]# ./acme.sh -d platform.vepp.ml -d '*.platform.vepp.ml' --renew --yes-I-know-dns-manual-mode-enough-go-ahead-please
[Ср янв 22 07:42:58 UTC 2020] Renew: '*.platform.vepp.ml'
[Ср янв 22 07:42:59 UTC 2020] Single domain='*.platform.vepp.ml'
[Ср янв 22 07:42:59 UTC 2020] Getting domain auth token for each domain
[Ср янв 22 07:42:59 UTC 2020] Verifying: *.platform.vepp.ml
[Ср янв 22 07:43:04 UTC 2020] Success
[Ср янв 22 07:43:04 UTC 2020] Verify finished, start to sign.
[Ср янв 22 07:43:04 UTC 2020] Lets finalize the order, Le_OrderFinalize: https://acme-v02.api.letsencrypt.org/acme/finalize/7XXXXX06/2XXXXXXX52
[Ср янв 22 07:43:06 UTC 2020] Download cert, Le_LinkCert: https://acme-v02.api.letsencrypt.org/acme/cert/04asdfasdfasdfsdfsdfasdfd4ed5e6bd52
[Ср янв 22 07:43:07 UTC 2020] Cert success.
-----BEGIN CERTIFICATE-----
MIIFWzCCBEOgAwIBAgISBJc/EG3l454Jqa+XLU7V5r1SMA0GCSqGSIb3DQEBCwUA
...
bJo8OulrAbClwClw4n8K9M3OdHk19r58t3+8OGUwPQ==
-----END CERTIFICATE-----
[Ср янв 22 07:43:07 UTC 2020] Your cert is in /root/.acme.sh/*.platform.vepp.ml/*.platform.vepp.ml.cer
[Ср янв 22 07:43:07 UTC 2020] Your cert key is in /root/.acme.sh/*.platform.vepp.ml/*.platform.vepp.ml.key
[Ср янв 22 07:43:07 UTC 2020] The intermediate CA cert is in /root/.acme.sh/*.platform.vepp.ml/ca.cer
[Ср янв 22 07:43:07 UTC 2020] And the full chain certs is there: /root/.acme.sh/*.platform.vepp.ml/fullchain.cer