Это руководство посвящено тому, как сгенерировать сертификат Let’s Encrypt Wildcard SSL. Как вы, возможно, уже знаете, Letsencrypt объявила о выпуске ACME v2 API, который теперь готов к производству. Одной из функций, которую ждали люди, является поддержка Wildcard сертификатов, которая отсутствовала в ACME v1.
В этом руководстве я покажу вам процесс генерации SSL-сертификата Let’s Encrypt с подстановочным знаком для использования в ваших веб-приложениях, подтвержденного вручную с помощью DNS. Конечные пользователи могут начать выдавать доверенные, готовые к производству сертификаты своим клиентам, совместимым с ACME v2, используя следующий URL-адрес каталога:
https://acme-v02.api.letsencrypt.org/directory
Обратите внимание, что вы должны использовать совместимый с ACME v2 клиент для доступа к этой конечной точке. Вы можете обратиться к нашему список совместимых с ACME v2 клиентов.
Установите certbot auto ACME
Выполните следующую команду для установки клиента certbot ACME v2, который мы будем использовать для получения ssl-сертификата с диким знаком.
# Ubuntu / Debian
sudo apt update
sudo apt install certbot
# Fedora
sudo dnf install certbot
# CentOS 8
sudo dnf -y install epel-release
sudo dnf -y install certbot
# CentOS 7
sudo yum -y install epel-release
sudo yum -y install certbot
Генерация SSL-сертификатов с диким знаком Let’s Encrypt
Я сгенерирую сертификат Wildcard для *.unixs.ru. Одним из требований является доступ к DNS-менеджеру для проверки владения доменом путем добавления сгенерированной TXT-записи.
Выполните приведенную ниже команду, чтобы запустить процесс запроса сертификата;
certbot certonly --manual -d 'example.com,*.example.com' --agree-tos \
--no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 \
-m your-email-address \
--server https://acme-v02.api.letsencrypt.org/directory
Вы должны получить результат, аналогичный приведенному ниже:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for unixs.ru
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.unixs.ru with the following value:
UGa2-db4b-gj9aWAmS8UCnctThIMgRTWAWSeCK_zLVPAfaz6lvQ
Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue
Это даст вам TXT-запись для добавления в ваш DNS, для меня это запись:
Name: _acme-challenge.example.com
TXT record: UGa2-db4b-gj9aWAmS8UCnctThIMgRTWAWSeCK_zLVPAfaz6lvQ
Вы можете проверить распространение записи с помощью команды dig в отдельной сессии оболочки.
$ dig TXT _acme-challenge.unixs.ru
; <<>> DiG 9.10.6 <<>> TXT _acme-challenge.unixs.ru @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1778
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_acme-challenge.unixs.ru. IN TXT
;; ANSWER SECTION:
_acme-challenge.unixs.ru. 300 IN TXT "UGa2-db4b-gj9aWAmS8UCnctThIMgRTWAWSeCK_zLVPAfaz6lvQ"
;; Query time: 204 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Tue Feb 06 12:43:50 EAT 2024
;; MSG SIZE rcvd: 122
После того как это будет сделано и запись будет заполнена, нажмите кнопку введите для продолжения. При успешной генерации вы должны получить результат, как показано ниже:
Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.unixs.ru.
Look for one or more bolded line(s) below the line ';ANSWER'. It should show the
value(s) you've just added.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/unixs.ru/fullchain.pem
Key is saved at: /etc/letsencrypt/live/unixs.ru/privkey.pem
This certificate expires on 2024-05-06.
These files will be updated when the certificate renews.
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
В результате вы получите полный путь к файлу закрытый ключ и сертификат файл. Теперь вы можете использовать сертификат в своих приложениях.
Продление сертификатов Let’s Encrypt Wildcard SSL
Чтобы проверить срок действия сертификатов, выполните следующие действия:
$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: unixs.ru
Serial Number: 4ba0899d212539b77542909ddd89683b141
Key Type: RSA
Domains: unixs.ru *.unixs.ru
Expiry Date: 2024-05-06 08:48:43+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/unixs.ru/fullchain.pem
Private Key Path: /etc/letsencrypt/live/unixs.ru/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Для обновления сертификатов выполните следующие команды.
certbot certonly -d 'example.com,*.example.com' \
--server https://acme-v02.api.letsencrypt.org/directory \
--manual \
--agree-tos \
--preferred-challenges dns