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

OSCHINA-MIRROR/jimcheung-letscertbot

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Let's Certbot

中文文档 Chinese document

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

Для проверки доменов Let's Certbot использует dns challenge на Certbot. По сравнению с http challenge это означает, что вы можете получить wildcard-сертификат и не нужно трогать веб-сервер.

В dns challenge вам нужно установить TXT DNS-запись с определённым содержимым в домен. Let's Certbot поможет вам сделать это через API DNS регистратора домена.

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

Aliyun; — Tencent Cloud; — Huawei Cloud; — GoDaddy; — Cloudflare.

Пример

example

Установка

Let's Certbot как инструмент Certbot поддерживает docker и не-docker среды.

Скачивание репозитория

Клонируйте этот репозиторий, чтобы получить Let's Certbot:

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

Затем скопируйте конфигурации:

$ cd letscertbot
$ cp config.json.example config.json

Установка с Docker

Запустите 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

Вы можете запустить Let's Certbot с Compose, если установлен Docker Compose:

$ sudo docker-compose run --rm app

Установка без Docker

Let's Certbot требует Python 2.7 или 3.4+, работающий в UNIX-подобной операционной системе.

Сначала вам необходимо подтвердить, установлен ли python:

$ python --version

Если всё в порядке, получите Certbot на Официальном сайте для вашей системы.

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

$ sudo certbot --version

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

Конфигурация

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

Имя Требуется Описание По умолчанию
base.email Да Адрес электронной почты для важных уведомлений о продлении
dns Да Настройки DNS
dns.wait_time Нет Время ожидания dns challenge (секунды) 20
dns.aliyun Нет Идентификатор ключа доступа и секретный ключ Aliyun
dns.qcloud Нет Секретный идентификатор и секретный ключ Tencent Cloud
dns.huaweicloud Нет Идентификатор ключа доступа и секретный доступ Huawei Cloud
dns.godaddy Нет Ключ API и секрет API GoDaddy
dns.cloudflare Нет Ключ API или токен API Cloudflare
log.enable Нет Включение отслеживания журнала false
log.logfile Нет Путь к файлу журнала ./log/application.log
deploy.servers Нет Серверы развёртывания Сервера развёртывания
:--: :--:
deploy.server.enable false Включает ли скрипт развёртывание на сервере false
deploy.server.host false Хост сервера развёртывания, для локального сервера — «localhost», обязательно при развёртывании
deploy.server.port false Порт удалённого сервера SSH-демона 22
deploy.server.user false Пользователь удалённого сервера, который использует логин SSH, выполняет команду 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) для разделения поддомена и основного домена. Если TLD или SLD вашего домена не существует в tlds.txt, вам нужно добавить его в список.

DNS API

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

# Запуск с помощью docker
$ sudo docker-compose run --rm app manual --test --domain your.example.com --dns aliyun

# Запуск без docker
$ sudo python ./bin/manual.py --test --domain your.example.com --dns aliyun

Скрипт разместит запись _acme-challenge TXT под вашим доменом через указанный DNS API.

Получение

Запустите сценарий получения (obtain.py) с правами администратора для получения сертификата:

# Запуск с помощью docker
$ sudo docker-compose run --rm app obtain -d your.example.com *.your.example.com

# Запуск без docker
$ sudo python ./bin/obtain.py -d your.example.com *.your.example.com

Затем вы получите сертификат с подстановочным знаком your.example.com в /etc/letsencrypt/live/ Вы можете указать имя сертификата с аргументом --cert:

# Запуск с помощью docker
$ sudo docker-compose run --rm app obtain -d x.example.com y.example.com --cert xny.example.com

# Запуск без docker
$ sudo python ./bin/obtain.py -d x.example.com y.example.com --cert xny.example.com

Если ваш регистратор доменных имён не поддерживает доступ к 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

# Запуск без docker
$ sudo python ./bin/obtain.py -d x.main_domain.com y.main_domain.com --dns qcloud --challenge-alias alias_domai.com

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

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

Продление

Продлите сертификаты с помощью сценария продления (renewal.py):

# Запуск с помощью docker
$ sudo docker-compose run --rm app renewal

# Запуск без docker
$ sudo python ./bin/renewal.py

Тогда Certbot попытается продлить все сертификаты, срок действия которых скоро истечёт. Вы можете добавить сценарий продления в качестве запланированной задачи в crontab:

# Запуск с помощью docker
0 0 */7 * * sudo docker-compose -f $your_letscertbot_home/docker-compose.yml run --rm app renewal > /var/log/letscertbot-renewal.log 2>&1

# Запуск без docker
``` **Докер**

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, должен иметь возможность подключиться к удалённому серверу. Чтобы подключиться, вам необходимо добавить открытый ключ локального сервера на удалённый сервер или предоставить deploy.server.password для sshpass.

Чтобы добавить сертификат в deploy.server.deploy_to или перезапустить nginx, Let's Certbot требует, чтобы у пользователя deploy.server были разрешения.

Вы можете получить сценарий развёртывания, выполнив следующую команду:

# Запуск с помощью докера
$ 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. Форкните его.
  2. Создайте свою ветку функций (git checkout -b my-new-feature).
  3. Зафиксируйте изменения (git commit -am 'Добавить некоторую функцию').
  4. Отправьте в ветку (git push origin my-new-feature).

Пожалуйста, напишите модульный тест с вашим кодом, если это необходимо.

Лицензия

Репозиторий доступен как открытый исходный код в соответствии с условиями лицензии MIT.

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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