Как установить Let’s Encrypt Wildcard SSL – ACME v2
Let’s Encrypt – это бесплатный, автоматизированный и открытый центр сертификации (CA), работающий на благо общественности. Это услуга, предоставляемая . По сути, они предоставляют бесплатную услугу ssl для ваших доменов, недавно Let’s Encrypt представил Wsldcard ssl для вашего домена, теперь вы можете использовать ssl без подстановочных знаков для своего домена и для нескольких поддоменов только с одним SSL-сертификатом (не нужно выдавать сертификаты для каждого поддомена) даже WordPress MultiSite (https) отлично с ним работает.
Ключевые принципы Let’s Encrypt:
- Бесплатно: любой, кто владеет доменным именем, может использовать Let’s Encrypt для получения доверенного сертификата с нулевой стоимостью.
- Автоматически: программное обеспечение, работающее на веб-сервере, может взаимодействовать с Let’s Encrypt для получения сертификата, безопасной настройки его для использования и автоматического обновления.
- Безопасность: Let’s Encrypt будет служить платформой для продвижения передовых методов обеспечения безопасности TLS, как на стороне CA, так и помогая операторам сайтов должным образом защищать свои серверы.
- Прозрачный: все выданные или отозванные сертификаты будут публично зарегистрированы и доступны для ознакомления любому.
- Открытый: протокол автоматической выдачи и обновления будет опубликован как открытый стандарт, который могут принять другие.
- Совместная работа: Let’s Encrypt – это совместная попытка принести пользу сообществу вне контроля какой-либо одной организации.
В этом уроке мы рассмотрим и выпустим Wildcard Let’s Encrypts ssl для домена. Это руководство будет работать с дистрибутивами Linux, такими как Redhat, CentOS (el6, el7), Ubuntu, fedora и т. д. Давайте начнем: –
Шаг 1
Измените каталог на root:
cd /root
Шаг 2
Для работы Let’s Encrypt нам нужен клиентский протокол ACME (также убедитесь, что установлен cURL):
yum install socat
curl https://get.acme.sh | sh
ИЛИ
yum install socat git
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
вы увидите, что он загрузит и добавит скрипт acme.
Шаг 3
Выдача wildcard ssl для домена через командную строку:
эта команда попросит вас добавить некоторые записи DNS TXT для проверки, необходимо добавить эти записи, в противном случае выдача сертификата завершится неудачно.
acme.sh --issue -d mysterydata.com -d *.mysterydata.com --dns --force
Если вы получаете:
It seems that you are using dns manual mode. Прочтите это: https://github.com/Neilpang/acme.sh/wiki/dns-manual-mode
затем выполните эту команду (рекомендуется):
acme.sh --issue -d bloglinux.ru -d *.bloglinux.ru --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please
* замените bloglinux.ru на ваше доменное имя
после запуска этой команды она попросит вас добавить запись TXT, как показано ниже:
[root@demo ~]# acme.sh --issue -d bloglinux.ru -d *.bloglinux.ru --dns --force
[Wed Mar 14 10:18:10 EDT 2018] Registering account
[Wed Mar 14 10:18:13 EDT 2018] Registered
[Wed Mar 14 10:18:13 EDT 2018] ACCOUNT_THUMBPRINT='MO7DtJidci1tp4CNPDUbQA0_jPjR3tKy8uQE-Q_Bb7k'
[Wed Mar 14 10:18:13 EDT 2018] Creating domain key
[Wed Mar 14 10:18:13 EDT 2018] The domain key is here: /root/.acme.sh/bloglinux.ru/bloglinux.ru.key
[Wed Mar 14 10:18:13 EDT 2018] Multi domain='DNS:bloglinux.ru,DNS:*.bloglinux.ru'
[Wed Mar 14 10:18:13 EDT 2018] Getting domain auth token for each domain
[Wed Mar 14 10:18:15 EDT 2018] Getting webroot for domain='bloglinux.ru'
[Wed Mar 14 10:18:15 EDT 2018] Getting webroot for domain='*.bloglinux.ru'
[Wed Mar 14 10:18:15 EDT 2018] Add the following TXT record:
[Wed Mar 14 10:18:15 EDT 2018] Domain: '_acme-challenge.bloglinux.ru'
[Wed Mar 14 10:18:15 EDT 2018] TXT value: 'YABz8SMXk_qqrIrUgx5_DWSjBUSuDsdvIxJ4RIEwMUQ'
[Wed Mar 14 10:18:15 EDT 2018] Please be aware that you prepend _acme-challenge. before your domain
[Wed Mar 14 10:18:15 EDT 2018] so the resulting subdomain will be: _acme-challenge.bloglinux.ru
[Wed Mar 14 10:18:15 EDT 2018] Add the following TXT record:
[Wed Mar 14 10:18:15 EDT 2018] Domain: '_acme-challenge.bloglinux.ru'
[Wed Mar 14 10:18:15 EDT 2018] TXT value: 'j4x7b-mzV7cCYCHT_LfLaAW0wDYMeeYayMMvindIGko'
[Wed Mar 14 10:18:15 EDT 2018] Please be aware that you prepend _acme-challenge. before your domain
[Wed Mar 14 10:18:15 EDT 2018] so the resulting subdomain will be: _acme-challenge.mysterydata.com
[Wed Mar 14 10:18:15 EDT 2018] Please add the TXT records to the domains, and retry again.
[Wed Mar 14 10:18:15 EDT 2018] Please add '--debug' or '--log' to check more details.
[Wed Mar 14 10:18:15 EDT 2018] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh
Вы можете видеть записи TXT:
[Wed Mar 14 10:18:15 EDT 2018] Add the following TXT record:
[Wed Mar 14 10:18:15 EDT 2018] Domain: '_acme-challenge.bloglinux.ru'
[Wed Mar 14 10:18:15 EDT 2018] TXT value: 'YABz8SMXk_qqrIrUgx5_DWSjBUSuDsdvIxJ4RIEwMUQ'
[Wed Mar 14 10:18:15 EDT 2018] Add the following TXT record:
[Wed Mar 14 10:18:15 EDT 2018] Domain: '_acme-challenge.bloglinux.ru'
[Wed Mar 14 10:18:15 EDT 2018] TXT value: 'j4x7b-mzV7cCYCHT_LfLaAW0wDYMeeYayMMvindIGko'
Теперь вам нужно добавить эти записи:
Запись _acme-challenge.bloglinux.ru poiniting к IP сервера
Значение записи TXT _acme-challenge.bloglinux.ru: «YABz8SMXk_qqrIrUgx5_DWSjBUSuDsdvIxJ4RIEwMUQ»
Значение записи TXT _acme-challenge.bloglinux.ru: «j4x7b-mzV7cCYCHT_LfLaAW0wDYMeeYayMMvindIGko»
Добавьте wildcard dns :
*.bloglinux.ru. 14400 IN A 107.152.32.123
* замените bloglinux.ru на ваше доменное имя
в конечном итоге DNS-конфигурация будет выглядеть так:

Шаг 4:
После добавления DNS дождитесь распространения DNS и выполните эту команду для выдачи сертификатов:
acme.sh --renew -d bloglinux.ru -d *.bloglinux.ru --dns --force
* замените bloglinux.ru на ваше доменное имя
Или (рекомендуется):
acme.sh --renew -d bloglinux.ru -d *.bloglinux.ru --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please
* замените bloglinux.ru на ваше доменное имя
Это ручной режим DNS, он не может быть обновлен автоматически. Вам придется добавить новую запись txt вручную, когда вы продляете сертификат.
Вы можете проверить обновленную запись TXT или нет с помощью этой команды:
dig -t txt dig -t txt _acme-challenge.bloglinux.ru
* замените bloglinux.ru на ваше доменное имя
все готово, вы увидите, что сертификаты теперь успешно выданы. Cert, Chain file и Private Key будут сохранены в:
/root/.acme.sh/yourdomain.com
с именем:
bloglinux.ru.cer <<=== Cert file
bloglinux.ru.key <<=== Private Key
fullchain.cer <<=== CA Chain file/bundle file
Теперь вы можете использовать этот файл в ssl vhost, просто обновив / добавив путь (вы можете найти в Google, как добавить ssl vhost для nginx и Apache):
Также убедитесь, что вы включили wildcard vhost для apache или nginx, каким бы ни был ваш основной веб-сервер. Или используйте несколько vhost с одинаковыми путями сертификации, как указано ниже.
apache:
SSLCertificateFile /root/.acme.sh/bloglinux.ru/bloglinux.ru.cer
SSLCertificateKeyFile /root/.acme.sh/bloglinux.ru/bloglinux.ru.key
SSLCertificateChainFile /root/.acme.sh/bloglinux.ru/fullchain.cer
nginx:
ssl_certificate /root/.acme.sh/bloglinux.ru/fullchain.cer;
ssl_certificate_key /root/.acme.sh/bloglinux.ru/bloglinux.ru.key;
* замените bloglinux.ru на ваше доменное имя
Шаг 5:
Чтобы обновить сертификаты, вам просто нужно выполнить эту команду через 90 дней, обновите запись TXT dns, как указано выше в шаге 3:
acme.sh --issue -d bloglinux.ru -d *.bloglinux.ru --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please
или
acme.sh --renew -d bloglinux.ru -d *.bloglinux.ru --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please
* замените bloglinux.ru на ваше доменное имя
Автоматическое продление сертификата (только если вы использовали автоматическое добавление DNS через API):
Для получения дополнительной информации о DNS API и о том, как это сделать: Автоматическое обновление let’s encrypt certs с помощью задания Cron, добавьте этот ежедневный cron для проверка автообновления:
0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
Вот так вы включите Let’s encrypt wildcard SSL .