Comment installer les plugins Certbot?

19

J'ai installé Certbot en suivant ce tutoriel :

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

Et maintenant, je veux configurer mon certificat, mais j'ai besoin du dns-digitaloceanplugin:

# 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

J'ai essayé de l'installer avec pip:

pip install certbot-dns-digitalocean

Mais apparemment, la version apt-get ne la "voit" pas.

Comment l'installer correctement?

mpen
la source

Réponses:

15

Meilleure méthode, grâce aux réponses des autres pour m'avoir aidé à y arriver.

Déterminez quels plugins sont installés actuellement:

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

Déterminez où votre certbot (dans mon cas certbot-auto) est installé:

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

Entrez dans Virtual Env et installez le plugin

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

Vérifier à nouveau les plugins 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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ryan
la source
Veuillez noter que cela peut être délicat à cron, les mises à niveau de la version certbot-auto vous obligeront à cron à nouveau la partie "pip install".
Ryan
10

Première exécution

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

Pour savoir où certbotest installé. Ou command -v certbotsi vous préférez.

Ensuite, exécutez head /usr/bin/certbotet notez la version de Python qu'il utilise:

#!/usr/bin/python3

Dans mon cas, il utilisait Python 3.

J'ai remarqué à partir de ma sortie pip qu'il essayait d'installer un paquet Python 2.7:

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

Alors, comment pouvons-nous installer pip pour installer des packages Python 3 à la place? Copiez simplement les instructions d' ici :

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

Maintenant, vous devriez avoir la pip3commande, exécutez-la à la place:

pip3 install certbot-dns-digitalocean

Et maintenant réessayez:

# 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
la source
si vous exécutez ce ImportError: cannot import name 'sysconfig'package d'installation d' erreur python3-distutils. Cela et l'utilisation de sudo ont fait l'affaire. J'ai le plugin route53 chargé.
DKebler
8

Maintenant (juillet 2018), vous devriez pouvoir utiliser

pip install certbot-dns-digitalocean

ou

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

Vous pouvez avoir besoin de sudoprivilèges pour l'un ou l'autre.

Après l'installation, vous ne pourrez peut-être pas voir le plugin avec certbot plugins, mais vous devriez pouvoir certbot certonly --dns-digitaloceantrès bien.

M. Davis
la source
1
Attendre. Comment avez-vous installé certbot alors? Je pense que mon problème est que j'ai installé certbot avec aptet certbot-dns-digitaloceanavec pipet certbot n'a pas pu le trouver.
mpen
Oui, et je l'ai installé de la même manière que vous. Peut-être que la façon dont vous avez installé pipest différente? aptJ'installé Python 2.7 et sudo easy_install pip(peut nécessiter un apt install de ces derniers : python-setuptools python-dev build-essential)
M. Davis
3

Vous devez utiliser Docker pour utiliser les plugins DNS. Depuis les plugins DNS :

Ces plugins sont toujours en cours de conditionnement par de nombreuses distributions et ne peuvent actuellement pas être installés avec certbot-auto. Si, toutefois, vous êtes à l'aise d'installer les certificats vous-même, vous pouvez exécuter ces plug-ins avec Docker .

erickgnavar
la source
Doc dit également : "La plupart des utilisateurs devraient utiliser les packages du système d'exploitation (voir les instructions sur certbot.eff.org) ou, en guise de solution de rechange certbot-auto. Vous ne devez utiliser Docker que si vous êtes sûr de savoir ce que vous faites et que vous avez une bonne raison faire cela."
Totor
2

La façon dont vous installez les plugins certbot dépend de la façon dont vous avez installé certbot lui-même. Si vous avez installé certbot à l'aide d'un gestionnaire de packages (apt, rpm, brew ...), vous devez rechercher des plugins certbot compatibles dans le référentiel de ce gestionnaire de packages.

Let's Encrypt prend également en charge une méthode d'installation alternative: le wrapper certbot-auto. Ce wrapper crée une installation virtuelle Python privée (généralement dans /opt/eff.org/certbot/venv) et installe certbot dans ce répertoire. Une caractéristique intéressante de certbot-auto est qu'il maintient automatiquement le client certbot à jour. Un inconvénient majeur est qu'il ne prend pas officiellement en charge l'installation des plugins (c'est-à-dire, à l'exception de quatre plugins installés par défaut).

Il est assez facile de contourner cette limitation, comme décrit dans la solution de Ryan G . Cependant, les plugins installés via cette procédure seront perdus chaque fois que certbot-auto se mettra à jour lui-même, ce qui peut entraîner des échecs de renouvellement aléatoires. Ici, nous avons eu quelques situations où certains certificats ont presque atteint l'expiration en raison de ce problème. Plusieurs tickets discutent de ce problème sur le traqueur de bogues de certbot, et l'équipe reconnaît le problème, mais il semble que cela puisse être encore long avant que le problème ne soit réellement résolu.

Par conséquent, si vous utilisez certbot-auto dans une configuration automatisée, il est souhaitable soit d'empêcher la mise à jour automatique de certbot-auto (en l'exécutant avec --no-self-upgrade), soit de mettre en œuvre une stratégie pour garantir que les plug-ins requis sont automatiquement réinstallés à chaque mise à jour de certbot.

Une solution possible pour s'assurer que les plugins requis sont installés est d'ajouter un wrapper autour de certbot-auto. Ce wrapper pourrait essentiellement ressembler à ceci:

#!/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" "$@"

J'ai mis à disposition une version plus complète de ce wrapper ici ; la seule différence avec la version plus longue est qu'elle garantit que le wrapper est exécuté en tant que root et qu'il gère correctement l' --helpargument.

Pour installer ce wrapper, téléchargez le certbot-autoprogramme officiel dans /usr/local/bin/certbot-auto-upstreamet copiez le wrapper dans /usr/local/bin/certbot-auto. Assurez-vous que les deux fichiers disposent des privilèges appropriés ( chown root:root /usr/local/bin/certbot-auto*, alors chmod 755 /usr/local/bin/certbot-auto*). Dans le fichier wrapper, assurez-vous que la ligne CERTBOT_PLUGINS="..."inclut la liste des plugins dont vous avez réellement besoin. Et c'est tout. Utilisez simplement la certbot-autocommande, comme vous l'auriez fait précédemment, et oubliez le certbot-auto-upstreamfichier.

jwatkins
la source
1

Si vous utilisez Ubuntu ou Debian, vous pouvez récupérer les paquets suivants à partir des tests Debian (Buster)

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

Matthew Darwin
la source
0

J'ai eu le même problème, après avoir mis à jour certbot sur OS XI, je n'ai pas pu faire apparaître le plugin digitalocean, même après l'avoir réinstallé avec pip install certbot-dns-digitalocean.

La solution consistait à le désinstaller puis à le réinstaller. J'ai utilisé sudo juste pour être sûr:

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

Il est alors apparu ok dans la certbot pluginsliste.

Alan Lawson
la source