Спосіб встановлення плагінів certbot залежить від способу встановлення самого certbot. Якщо ви встановили certbot за допомогою якогось менеджера пакунків (apt, rpm, brew ...), вам слід шукати сумісні плагіни certbot у сховищі цього менеджера пакунків.
Давайте Encrypt також підтримує альтернативний метод встановлення: обгортку 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" "$@"
Я зробила доступною більш повну версію цієї обгортки тут ; Єдині відмінності від більш тривалої версії полягають у тому, що вона забезпечує те, що обгортка запускається як корінь, і правильно керує --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
файл.