Как установить плагины Certbot?

19

Я установил Certbot, следуя этому руководству :

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx

И теперь я хочу настроить свой сертификат, но мне нужен dns-digitaloceanплагин:

# certbot certonly --dns-digitalocean
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Could not choose appropriate plugin: The requested dns-digitalocean plugin does not appear to be installed
The requested dns-digitalocean plugin does not appear to be installed

Я попытался установить его с pip:

pip install certbot-dns-digitalocean

Но, очевидно, версия apt-get не «видит» ее.

Как правильно установить его?

mpen
источник

Ответы:

15

Лучший метод, спасибо другим, кто помог мне добраться до этого.

Определите, какие плагины установлены в настоящее время:

# certbot-auto plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* apache
Description: Apache Web Server plugin - Beta
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = certbot_apache.entrypoint:ENTRYPOINT

* nginx
Description: Nginx Web Server plugin
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: nginx = certbot_nginx.configurator:NginxConfigurator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Определите, где установлен ваш certbot (в моем случае certbot-auto):

# find / -name certbot
/opt/eff.org/certbot
...

Зайдите в Virtual Env и установите плагин

cd /opt/eff.org/certbot/venv
source bin/activate
pip install certbot-dns-google
deactivate

Проверьте плагины certbot снова

# certbot-auto plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* apache
Description: Apache Web Server plugin - Beta
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = certbot_apache.entrypoint:ENTRYPOINT

* dns-google
Description: Obtain certificates using a DNS TXT record (if you are using Google
Cloud DNS for DNS).
Interfaces: IAuthenticator, IPlugin
Entry point: dns-google = certbot_dns_google.dns_google:Authenticator

* nginx
Description: Nginx Web Server plugin
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: nginx = certbot_nginx.configurator:NginxConfigurator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Райан
источник
Обратите внимание, что это может быть непросто, cron, при обновлении версии certbot-auto вам потребуется снова выполнить cron «pip install».
Райан
10

Первый забег

# type certbot
certbot is hashed (/usr/bin/certbot)

Чтобы узнать, где certbotустановлен. Или, command -v certbotесли вы предпочитаете.

Затем запустите head /usr/bin/certbotи обратите внимание, какую версию Python он использует:

#!/usr/bin/python3

В моем случае это был Python 3.

По выводу pip я заметил, что он пытается установить пакет Python 2.7:

# pip install certbot-dns-digitalocean
Requirement already satisfied: certbot-dns-digitalocean in /usr/local/lib/python2.7/dist-packages

Так как же получить pip для установки пакетов Python 3? Просто скопируйте инструкции отсюда :

cd /tmp
curl -O https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
rm get-pip.py

Теперь у вас должна быть pip3команда, поэтому запустите ее:

pip3 install certbot-dns-digitalocean

А теперь попробуйте еще раз:

# certbot plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
* dns-digitalocean
Description: Obtain certs using a DNS TXT record (if you are using DigitalOcean
for DNS).
Interfaces: IAuthenticator, IPlugin
Entry point: dns-digitalocean =
certbot_dns_digitalocean.dns_digitalocean:Authenticator
mpen
источник
если вы столкнетесь с этой ошибкой, ImportError: cannot import name 'sysconfig'установите пакет python3-distutils. Это и использование sudo сделали свое дело. У меня загружен плагин route53.
ДКеблер
8

Теперь (июль 2018 года) вы можете использовать

pip install certbot-dns-digitalocean

или

git clone https://github.com/certbot/certbot.git
cd certbot/certbot-dns-digitalocean/
python setup.py install

Вам могут понадобиться sudoпривилегии для любого.

После установки вы, возможно, не сможете увидеть плагин certbot plugins, но у вас все получится certbot certonly --dns-digitalocean.

М. Дэвис
источник
1
Подожди. Как вы установили certbot тогда? Я думаю, что моя проблема заключалась в том, что я установил certbot с aptи certbot-dns-digitaloceanс, pipи certbot не смог его найти.
mpen
Да, и я установил его так же, как вы сделали. Может быть, способ, которым вы установили pip, отличается? Я aptустановил Python 2.7 , а затем sudo easy_install pip(может потребоваться подходящая установка из них: python-setuptools python-dev build-essential)
М. Дэвис
3

Вы должны использовать Docker, чтобы использовать плагины DNS. Из плагинов DNS :

Эти плагины все еще находятся в процессе упаковки во многих дистрибутивах и в настоящее время не могут быть установлены вместе с ними certbot-auto. Однако, если вам удобно устанавливать сертификаты самостоятельно, вы можете запустить эти плагины с помощью Docker .

erickgnavar
источник
Док также говорит : «Большинству пользователей следует использовать пакеты операционной системы (см. Инструкции на certbot.eff.org) или, как запасной вариант, certbot-autoиспользовать Docker, только если вы уверены, что знаете, что делаете, и у вас есть веская причина. сделать это ".
Тотор
2

Способ установки плагинов 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файле.

jwatkins
источник
1

Если вы работаете в Ubuntu или Debian, вы можете получить следующие пакеты из тестирования Debian (buster)

python3-certbot-dns-digitalocean_0.23.0-2_all.deb python3-digitalocean_1.13.2-1_all.deb

Мэтью Дарвин
источник
0

У меня была та же проблема, после того, как я обновил certbot на OS XI, я не смог запустить плагин digitalocean, даже после его повторной установки pip install certbot-dns-digitalocean.

Решение состояло в том, чтобы удалить это и затем повторно установить это. Я использовал sudo просто для безопасности:

sudo pip uninstall certbot-dns-digitalocean 
sudo pip install certbot-dns-digitalocean

Затем он появился нормально в certbot pluginsсписке.

Алан Лоусон
источник