Содержание
Обзор
Let's Encrypt - это открытый автоматизированный центр сертификации, использующий ACME (Среда автоматического управления сертификатами) протокол для предоставления бесплатных сертификатов TLS / SSL любому совместимому клиенту. Эти сертификаты могут использоваться для шифрования связи между веб-серверами и пользователями.
В этом руководстве мы кратко обсудим центры сертификации и то, как интеграция Zevenet работает с Let's Encrypt, а затем рассмотрим, как Zevenet использует certbot (Клиент ACME) для связи с инфраструктурой Let's encrypt.
Zevenet Load Balancer 6.0.3 или более поздняя версия включает в себя крошечную оболочку certbot, которая называется letsencryptz Чтобы использовать функциональность веб-корня Certbot, в следующих строках объясняется, как работает эта оболочка, пожалуйста, учтите все это, чтобы она работала в производственных средах.
Как работает проверка Let's encrypt?
В качестве краткого описания функциональности webroot, плагин webroot работает путем создания временного файла для каждого из запрошенных вами доменов в пути к файлу Zevenet. /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Затем сервер проверки Let's Encrypt выполняет HTTP-запросы для проверки того, что DNS для каждого запрошенного домена разрешается на сервер, на котором запущена оболочка letsencryptz, и временный файл для целей проверки доступен. На следующей диаграмме показан реальный пример:
На предыдущей диаграмме балансировщик нагрузки Zevenet находится за маршрутизатором / брандмауэром с публичным IP-адресом. 185.79.20.147 (в качестве примера) трафик HTTP и HTTPS передается на внутренний балансировщик нагрузки с помощью VIP 192.168.101.31 (в качестве примера), где балансировщик нагрузки настроен с различными фермами 2:
Имя фермы HTTPS Веб хостинг с помощью 192.168.101.31:443, Эта ферма отвечает за предоставление веб-хостинга, различные веб-серверы публикуются вместе с этим в Интернете. Например, test1.zevenet.es, test2.zevenet.es, test3.zevenet.es тестируют веб-страницы, опубликованные на этом виртуальном сервисе, среди других.
Имя фермы HTTP WebhostingRedirect с помощью 192.168.101.31:80, Эта ферма используется только для перенаправления, она перенаправляет весь трафик с HTTP на HTTPS.
На предыдущей диаграмме описан запрос сертификата SSL Let's Encrypt для домена. test1.zevenet.es следующим образом:
1. Запрос сертификата отправляется от самого балансировщика нагрузки в инфраструктуру Let's Encrypt.
2. Let's encrypt обнаруживает новый запрос сертификата SSL для test1.zevenet.es
3. Давайте зашифруем, запустим разрешение IP-адреса DNS для запрошенного хоста: test1.zevenet.es проверка, что результатом является общедоступный IP-адрес, тот же IP-адрес источника, который инициировал запрос.
4. На этом этапе Let's encrypt объявляет letsencryptz скрипт (webroot cerbot), необходимый для создания файла с HASH / ХЭШ на общественном пути http://test1.zevenet.es/.well-know/acme-challenge/ (Порт 80 TCP), локальный каталог /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/, Затем, letsencryptz настраивает временную службу, чтобы сделать этот файл доступным из Интернета (ферма WebhostingRedirect будет изменен для этой цели. Если ферма уже не настроена letsencryptz создаст временный в этом VIP и Port).
6. Как только letsencryptz подтверждает создание временного сервиса, серверы Lets Encrypt проверяют, что файл временного подтверждения был создан и HASH / ХЭШ содержание правильно.
7. Наконец, серверы Let's Encrypt отвечают на первый запрос уже созданным сертификатом для Распространенное имя (CN) test1.zevenet.es.
8. Zevenet будет хранить уже созданный сертификат по локальному пути / USR / местные / zevenet / конфигурации / и он готов к настройке в ферме Веб хостинг.
На этом этапе новый сертификат Let's Encrypt будет использоваться для виртуальной службы HTTPS.
Команды автоматизации Let's Encrypt
Как описано, letsencryptz Скрипт будет автоматизировать необходимые действия для управления вашими сертификатами SSL, такими как создание, обновление, уничтожение или список, среди прочего. Найдите ниже доступные команды.
root@zva6k:~# letsencryptz letsencryptz description: letsencryptz is a let's encrypt (certbot) wrapper with minimal parameters ready to manage Let's Encrypt certificates for ZEVENET https profiles. Take into account that this wrapper uses certbot webroot feature so the public Let's encrypt architecture requires to connect with a local Virtual IP and port (TCP 80 by default) in order to do a request validation for the requested domain, so as soon as the "obtain" param is used, this script will configure an HTTP farm which will be accessed by Let's encrypt for verification purpose, this configuration is done automatically by this script itself, only ensure that the used Virtual IP and HTTP port 80 is not used by any another load balanced farm, and also ensure that the DNS resolution for the requested domain is reachable from let's encrypt system. usage: /usr/local/zevenet/bin/letsencryptz <action> <commands> action: --obtain | --destroy | --renew | --list | --listconf | --help --obtain: Request new Certificates using webroot cert-bot module. commands: --vip <Virtual IP> --farm <Farm Name> --domain <domain1> --domain <domain2> --domain <domainN> --test --vip: The Virtual IP already configured were to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate request. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead. --farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP. --domain: The domain which requests the Certificate for, i.e. www.mycompany.com. --test: Optional parameter, if used the certificate is requested for test purpose. --destroy: Revoke and delete the indicated Certificate Name, the action is rejected if the given certificate is in use by a farm. commands: --certname <Certificate Name> --certname: Certificate Name, this value can be obtained from the action --list. --renew: Renew the certificates near to expiry, no commands needed commands: --test --forcerestart --vip <Virtual IP> --farm <Farm Name> --test: Optional parameter, if used a dry-run is executed, the renew of the certificates is simulated. --forcerestart: Optional parameter, if used the farms that are using the renewed certificates will be restarted in order to apply the changes. --vip: The Virtual IP already configured where to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate renew. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead. --farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP. --list: List all the local certificates managed by let's encrypt and the status, no commands needed. --listconf: List the Zevenet let's encrypt configuration module (check global.conf file), no commands needed. --help: Obtain this help.
Первый запуск letsencryptz займет некоторое время, потому что система будет автоматически устанавливать неразрешенные зависимости, а также перед тем, как начать ее использовать, выполняется проверка конфигурации, Let's Encrypt запрашивает учетную запись электронной почты или контактные цели, связанные с сертификатами, эта учетная запись электронной почты будет использоваться при любых действиях, выполняемых против системы Let's Encrypt, этот адрес электронной почты можно настроить в основном файле конфигурации /usr/local/zevenet/config/global.confдиректива $ le_email.
Некоторые примеры использования приведены ниже.
Создание сертификата Zevenet Let's Encrypt
Эта команда запрашивает новый сертификат для домена test2.zevenet.es. Учтите, что данный VIP будет внутренним, трафик которого нужно перебрасывать с публичного IP на внутренний. Если Let's Encrypt не сможет связаться с этой службой, запрос будет отклонен.
root@zva6k:~# letsencryptz --obtain --vip 192.168.101.31 --domain test2.zevenet.es WARNING: No farm name specified, a temporal farm with name letsencryptZevenet will be created in VIP 192.168.101.31 port 80. Configuring farm for let's encrypt Certificate Name verification Obtaining Certificate for domains test2.zevenet.es... Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate Non-standard path(s), might not work with crontab installed by your operating system package manager Certificate Request for the domain(s) test2.zevenet.es OK Created Certificate name test2.zevenet.es in PEM format ready for HTTPS profile Destroying webroot configuration for the farm letsencryptZevenet Deleting already configuration for letsencryptZevenet, service letsencryptz Restarting farms using renewed certificates:
Список сертификатов Zevenet Let's Encrypt
Выполнение этой команды покажет текущие сертификаты, управляемые системой Zevenet Let's Encrypt.
root@zva6k:~# letsencryptz --list Listing all available certificates for the current configuration in config dir /usr/local/zevenet/config/letsencrypt/ Saving debug log to /var/log/letsencrypt/letsencrypt.log Certificate Name: test1.zevenet.es Domain(s): test1.zevenet.es Expiry Date: 2019-09-19 10:48:02+00:00 (VALID: 77 days) Pem Certificate file: /usr/local/zevenet/config/test1_zevenet_es.pem Certificate Name: test3.zevenet.es Domain(s): test3.zevenet.es Expiry Date: 2019-09-26 06:32:52+00:00 (VALID: 83 days) Pem Certificate file: /usr/local/zevenet/config/test3_zevenet_es.pem
Принять во внимание поле Название сертификатаэто поле будет распознано оболочкой letsencryptz как –Certname.
Продление сертификата Zevenet Let's Encrypt
Предыдущая команда проверяет, требует ли продление какого-либо уже сгенерированного сертификата, и в этом случае обновление будет выполнено автоматически. Примите во внимание, что, если обновленная сертифицированная система используется, потребуется перезагрузка фермы, чтобы применить изменения, пожалуйста, используйте опцию –Forcerestart если вы хотите letsencryptz перезапускает все необходимые фермы, чтобы применить изменения.
root@zva6k:~# letsencryptz --renew --vip 192.168.101.31 Renewing all the required certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log Cert not yet due for renewal Cert not yet due for renewal
Удаление сертификата Zevenet Let's Encrypt
Эта команда отзывает и удаляет данный сертификат. В случае, если система обнаружит, что выбранный сертификат в настоящее время используется какой-либо фермой HTTPS, действие будет отклонено, в приведенном выше примере действие удаления отклонено, так как сертификат используется фермой testhttps.
root@zva6k:~# letsencryptz --destroy --certname test3.zevenet.es Revoking and deleting certificate(s) test3.zevenet.es for the current configuration... This file can't be deleted because is used by the farm(s): testhttps
Как только сертификат будет удален из фермы, будет выполнено действие:
root@zva6k:~# letsencryptz --destroy --certname test3.zevenet.es Revoking and deleting certificate(s) test3.zevenet.es for the current configuration... Saving debug log to /var/log/letsencrypt/letsencrypt.log Deleted certificate(s) test3.zevenet.es in path /usr/local/zevenet/config/test3_zevenet_es.pem
Перенести сертификаты Let's Encrypt в Zevenet
Балансировщик нагрузки Zevenet сохраняет все файлы конфигурации certbot в местном пути / USR / местные / zevenet / конфигурации / letsencrypt /, Чтобы переместить ваши существующие файлы конфигурации certbot (по умолчанию в / И т.д. / letsencrypt) другого Сервера в Zevenet, вам нужно только создать tarball (файл tar.gz) из этого существующего каталога конфигурации на вашем сервере и распаковать содержимое в пути конфигурации Zevenet Let's Encrypt. Наконец, рассмотрите возможность изменения переменной $ le_email в файле global.conf на тот же адрес электронной почты, который использовался в предыдущих запросах.
Поддержка кластеризации сертификатов Let's Encrypt
Плагин Zevenet Let's Encrypt полностью поддерживается службой Zevenet Cluster. Все действия Let's Encrypt сохраняются в файле конфигурации, реплицируемом службой кластеров Zevenet, поэтому любое действие, выполняемое в MASTER узел будет скопирован на SLAVE узел, но любое действие, выполненное в SLAVE узел, связанный с Let's Encrypt, будет отброшен во избежание десинхронизации.
Автоматическое продление сертификатов Let's Encrypt
Плагин Zevenet Let's Encrypt можно настроить так, чтобы ежедневно проверять, нуждается ли какой-либо сертификат в обновлении, в случае, если система автоматически обновляет данный сертификат и он используется какой-либо фермой, тогда ферма будет перезапущена автоматически, чтобы применить изменение сертификата.
Чтобы настроить автоматическое обновление, сделайте следующее:
Создайте следующий файл cron /etc/cron.d/letsencryptz со следующим содержанием:
root@zva6k:~# cat /etc/cron.d/letsencryptz 00 00 * * * root /usr/local/zevenet/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31
В этой конфигурации проверка продления будет выполняться ежедневно в 00:00 (полночь). И VIP 192.168.101.31 будет использоваться в порту 80 для целей проверки от Let's Encrypt System.
Рекомендации
Некоторые ссылки, используемые в этой статье: