1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jimcheung-letscertbot

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-CN.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 03:52 c45d15b

Let's Certbot

Let's Certbot — это инструмент, основанный на Certbot, который используется для автоматизации процесса получения, продления и развёртывания SSL-сертификатов.

Для проверки вашего доменного имени Let's Certbot использует метод проверки Certbot через DNS. Этот метод не требует каких-либо действий в уже развёрнутом веб-приложении, и вы также можете подать заявку на подстановочный сертификат.

В процессе проверки через DNS вам необходимо создать TXT-запись DNS с определённым содержимым для вашего доменного имени. Let's Certbot поможет вам настроить это через API DNS вашего провайдера услуг домена.

На данный момент поддерживаются следующие провайдеры услуг домена:

  • Alibaba Cloud;
  • Tencent Cloud;
  • Huawei Cloud;
  • GoDaddy;
  • Cloudflare.

Пример

Установка

Как инструмент Certbot, Let's Certbot поддерживает установку через Docker-контейнеры или без использования контейнеров.

  1. Клонирование репозитория: Сначала клонируйте этот репозиторий, чтобы получить Let's Certbot:

    $ git clone git@github.com:jinhucheung/letscertbot.git

    После этого скопируйте файл конфигурации:

    $ cd letscertbot
    $ cp config.json.example config.json
  2. Установка через контейнеры: Вы можете запустить Let's Certbot с помощью Docker:

    $ sudo docker run --rm --name letscertbot -v "$your_letscertbot_home/config.json:/app/config.json" -v "$your_letscertbot_home/tlds.txt:/app/tlds.txt" -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" jimcheung/letscertbot

    Если у вас установлен Docker Compose, вы можете использовать его для запуска:

    $ sudo docker-compose run --rm app
  3. Установка без контейнеров: Let's Certbot совместим с окружением выполнения Certbot и требует операционной системы класса UNIX и Python 2.7 или 3.4+.

    Прежде всего, убедитесь, что Python установлен:

    $ python --version

    Затем установите Certbot для вашей операционной системы согласно официальной документации Certbot.

    После установки Certbot запустите его с правами администратора:

    $ sudo certbot --version

Использование

Перед использованием Let's Certbot необходимо выполнить следующие настройки:

Название Обязательно Описание По умолчанию
base.email true Адрес электронной почты для получения уведомлений о продлении и т. д.
dns true Настройки DNS
dns.wait_time false Время ожидания при проверке DNS (в секундах) 20
dns.aliyun false Идентификатор ключа доступа и секретный ключ для учётной записи Alibaba Cloud
dns.qcloud false Секретный идентификатор и секретный ключ для учётной записи Tencent Cloud
dns.huaweicloud false Идентификатор ключа доступа и секретный доступ для учётной записи Huawei Cloud
dns.godaddy false Ключ API и секрет API для учётной записи GoDaddy
dns.cloudflare false Ключ API или токен API для учётной записи Cloudflare
log.enable false Включение логирования false
log.logfile false Путь к файлу журнала ./log/application.log
deploy.servers false Список серверов для развёртывания
deploy.server.enable false Включить ли скрипт развёртывания на сервере false
deploy.server.host false Адрес сервера для развёртывания (localhost для локального сервера)
deploy.server.port false Порт, на котором SSH-демон привязан к удалённому серверу для развёртывания 22
deploy.server.user false Пользователь для входа на удалённый сервер для развёртывания root
deploy.server.password false Пароль для входа на удалённый сервер для развёртывания
deploy.server.deploy_to false Каталог на удалённом сервере, куда будут развёрнуты сертификаты /etc/letsencrypt/live
deploy.server.restart_nginx false Перезапустить nginx после развёртывания false
deploy.server.after_hook false Команда, выполняемая после успешного развёртывания
------------------------------------------------------------------------------------
Кроме того, файл tlds.txt содержит некоторые домены верхнего уровня (TLD) и домены нижнего уровня (SLD), используемые для разделения поддоменов и основных доменов в доменном имени. Если ваш домен верхнего или нижнего уровня не находится в файле tlds.txt, вам необходимо добавить его туда.

DNS API

Перед получением сертификата вы можете выполнить скрипт manual.py с помощью вашего ключа доступа для тестирования DNS API:

# Контейнерный способ
$ sudo docker-compose run --rm app manual --test --domain your.example.com --dns aliyun

# Неконтейнерный способ
$ sudo python ./bin/manual.py --test --domain your.example.com --dns aliyun

Этот скрипт добавит запись _acme-challenge TXT в ваш домен.

Получение сертификата

Выполните скрипт obtain.py, чтобы получить сертификат:

# Контейнерный способ
$ sudo docker-compose run --rm app obtain -d your.example.com *.your.example.com

# Неконтейнерный способ
$ sudo python ./bin/obtain.py -d your.example.com *.your.example.com

Затем вы получите подстановочный сертификат с именем your.example.com в каталоге /etc/letsencrypt/live/.

Вы можете указать параметр --cert для указания имени сертификата:

# Контейнерный способ
$ sudo docker-compose run --rm app obtain -d x.example.com y.example.com --cert xny.example.com

# Неконтейнерный способ
$ sudo python ./bin/obtain.py -d x.example.com y.example.com --cert xny.example.com

Если ваш поставщик домена не поддерживает DNS API или вы беспокоитесь о безопасности, вы можете использовать режим псевдонима DNS:

# Контейнерный способ
$ sudo docker-compose run --rm app obtain -d x.main_domain.com y.main_domain.com --dns qcloud --challenge-alias alias_domain.com

# Неконтейнерный способ
$ sudo python ./bin/obtain.py -d x.main_domain.com y.main_domain.com --dns qcloud --challenge-alias alias_domain.com

После выполнения этой команды Let's Certbot перенесёт проверку доменных имён x.main_domain.com и y.main_domain.com на alias_domain.com и создаст верификационную запись TXT DNS через API qcloud для alias_domain.com. Для этого вам нужно заранее добавить записи CNAME для доменов, которые вы хотите проверить:

_acme-challenge.x.main_domain.com => _acme-challenge.alias_domain.com
_acme-challenge.y.main_domain.com => _acme-change.alias_domain.com

Продление сертификата

Используйте скрипт renewal.py, чтобы продлить срок действия сертификата:

# Контейнерный способ
$ sudo docker-compose run --rm app renewal

# Неконтейнерный способ
$ sudo python ./bin/renewal.py

Certbot продлит срок действия всех сертификатов, срок действия которых скоро истечёт.

Вы можете настроить запланированное задание, добавив скрипт продления в crontab:

# Контейнерный способ
0 0 */7 * * sudo docker-compose -f $your_letscertbot_home/docker-compose.yml run --rm app renewal > /var/log/letscertbot-renewal.log 2>&1

# Неконтейнерный способ
0 0 */7 * * sudo $your_letscertbot_home/bin/renewal.py > /var/log/letscertbot-renewal.log 2>&1

Это запланированное задание будет выполняться каждые 7 дней.

Если вам нужно принудительно продлить срок действия определённого сертификата, вы можете указать параметры --force и --certs:

# Контейнерный способ
$ sudo docker-compose run --rm app renewal --certs xny.example.com --force

# Неконтейнерный способ
$ sudo python ./bin/renewal.py --certs xny.example.com --force

Развёртывание сертификата

Если вы установите deploy.server.enable в значение true, Certbot выполнит скрипт развёртывания (deploy.py) на крючке развёртывания. Этот скрипт получает уже продлённые сертификаты и отправляет их на настроенный сервер.

Let's Certbot использует SSH для развёртывания сертификатов на удалённом сервере, что означает, что машина, на которой выполняется Certbot, должна иметь возможность подключиться к удалённому серверу по SSH. Чтобы соединение было успешным, вам необходимо отправить открытый ключ на удалённый сервер или предоставить deploy.server.password инструменту sshpass.

Кроме того, для того чтобы Let's Certbot развернул сертификаты в каталог deploy.server.deploy_to или перезапустил nginx, пользователь deploy.server.user должен иметь соответствующие права.

Чтобы получить скрипт развёртывания, выполните команду:

# Контейнерный способ
$ sudo docker-compose run --rm app deploy --check

# Неконтейнерный способ
$ sudo python ./bin/deploy.py --check

Для отправки сертификатов на сконфигурированный сервер выполните:

# Контейнерный способ
$ sudo docker-compose run --rm app deploy --push --cert $certificate_name --server $server_host

# Неконтейнерный способ
$ sudo python ./bin/deploy.py --push --cert $certificate_name --server $server_host

Примечание: если deploy.server запущен в принудительном режиме SELinux, вам необходимо убедиться, что nginx имеет разрешение на доступ к контексту безопасности SELinux каталога deploy.server.deploy_to.

Примечание: если вы используете Let's Certbot в контейнерном режиме и вам нужно перезапустить локальный nginx после развёртывания сертификата, рекомендуется использовать удалённый сервер для настройки локального сервера.

Благодарности

Вклад

Мы приветствуем сообщения об ошибках или запросы на вытягивание.

  1. Создайте ветку для вашего вклада (git checkout -b my-new-feature).
  2. Внесите изменения (git commit -am 'Добавить функцию').
  3. Отправьте изменения в текущую ветку (git push origin my-new-feature).

При необходимости напишите модульные тесты для своего кода.

Лицензия

Согласно условиям лицензии MIT, этот репозиторий можно использовать как открытый исходный код.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jimcheung-letscertbot.git
git@api.gitlife.ru:oschina-mirror/jimcheung-letscertbot.git
oschina-mirror
jimcheung-letscertbot
jimcheung-letscertbot
master