Способ установки плагинов certbot зависит от того, как вы установили сам certbot. Если вы установили certbot с помощью какого-либо менеджера пакетов (apt, rpm, brew ...), то вам следует поискать совместимые плагины certbot в репозитории этого менеджера пакетов.
Давайте зашифруем также поддержку альтернативного метода установки: оболочки certbot-auto. Этот упаковщик создает частную виртуальную установку Python (обычно в /opt/eff.org/certbot/venv
) и устанавливает certbot в этот каталог. Приятной особенностью certbot-auto является то, что он автоматически поддерживает клиента certbot в актуальном состоянии. Основным недостатком является то, что он официально не поддерживает установку плагинов (то есть, кроме четырех плагинов, которые установлены по умолчанию).
Легко достаточно , чтобы обойти это ограничение, как описано в решении Райана G в . Однако плагины, установленные с помощью этой процедуры, будут потеряны при каждом обновлении certbot-auto, что может привести к случайным сбоям при обновлении. Здесь у нас было несколько ситуаций, когда некоторые сертификаты почти истекли из-за этой проблемы. Несколько билетов обсуждают эту проблему на багтрекере certbot, и команда признает проблему, но кажется, что до того, как проблема действительно будет устранена, может пройти еще долгий путь.
Поэтому при использовании certbot-auto в автоматической настройке желательно либо предотвратить самообновление certbot-auto (запустив его с помощью --no-self-upgrade
), либо реализовать некоторую стратегию, обеспечивающую автоматическую переустановку необходимых плагинов при каждом обновлении certbot.
Возможное решение для того, чтобы действительно гарантировать, что необходимые плагины установлены, состоит в добавлении оболочки вокруг certbot-auto. Эта оболочка может выглядеть следующим образом:
#!/bin/bash
# The list of plugins to be installed
CERTBOT_PLUGINS="certbot-dns-route53"
# Force the venv directory to be where we can easily find it
export VENV_PATH="/opt/eff.org/certbot/venv"
# Force certbot-auto to be where we expect it to be
export CERTBOT_AUTO="/usr/local/bin/certbot-auto-upstream"
# Force certbot-auto to bootstrap or upgrade itself, but do no more
"${CERTBOT_AUTO}" --install-only "$@"
# Check if required plugins are installed; install them if they are missing
(
cd ${VENV_PATH}
source bin/activate
for plugin in $CERTBOT_PLUGINS ; do
if ! pip show -q "$plugin" ; then
pip install "$plugin"
fi
done
deactivate
)
# Execute the actual certbot command
"${VENV_PATH}/bin/letsencrypt" "$@"
Я сделал более полную версию этой обертки здесь ; единственная разница с более длинной версией заключается в том, что она обеспечивает запуск оболочки от имени пользователя root и правильно обрабатывает --help
аргумент.
Чтобы установить эту оболочку, загрузите официальную certbot-auto
программу /usr/local/bin/certbot-auto-upstream
и скопируйте ее /usr/local/bin/certbot-auto
. Убедитесь, что оба файла имеют надлежащие привилегии ( chown root:root /usr/local/bin/certbot-auto*
, затем chmod 755 /usr/local/bin/certbot-auto*
). В файле оболочки убедитесь, что в строке CERTBOT_PLUGINS="..."
содержится список плагинов, которые вам действительно нужны. Вот и все. Просто используйте certbot-auto
команду, как вы делали ранее, и забудьте о certbot-auto-upstream
файле.