Як встановити плагіни Certbot?


19

Я встановив Certbot, дотримуючись цього підручника :

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

А тепер я хочу встановити свою програму cert, але мені потрібен 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 не "бачить" її.

Як правильно його встановити?

Відповіді:


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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Зверніть увагу, що це може бути складним для крона, оновлення версії certbot-auto призведе до того, що вам доведеться знову зафіксувати частину "встановити пакет".
Райан

10

Перший пробіг

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

Щоб дізнатися, куди certbotвстановлено. Або command -v certbotякщо ви віддаєте перевагу.

Потім запустіть head /usr/bin/certbotі відзначте, яку версію Python він використовує:

#!/usr/bin/python3

У моєму випадку він використовував Python 3.

Я помітив, що з мого піп-виводу намагався встановити пакет 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

якщо ви зіткнулися з цим ImportError: cannot import name 'sysconfig'пакетом встановлення помилок python3-distutils. Це і використання судо зробило свою справу. У мене завантажений плагін route53.
DKebler

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 .


Док також каже : "Більшість користувачів повинні використовувати пакети операційної системи (див. Інструкції на certbot.eff.org) або, як резервна копія,. certbot-autoВи повинні використовувати Docker лише тоді, коли ви впевнені, що знаєте, що робите, і маєте вагомі причини робити так."
Тотор

2

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


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 pip uninstall certbot-dns-digitalocean 
sudo pip install certbot-dns-digitalocean

Потім це було добре в certbot pluginsсписку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.