Wie installiere ich Certbot-Plugins?


19

Ich installierte Certbot durch folgende dieses Tutorial :

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

Und jetzt möchte ich mein Zertifikat einrichten, aber ich brauche das 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

Ich habe versucht, es zu installieren mit pip:

pip install certbot-dns-digitalocean

Aber anscheinend "sieht" die passende Version es nicht.

Wie installiere ich es richtig?

Antworten:


15

Bessere Methode, dank der anderen Antworten, die mir dabei geholfen haben.

Bestimmen Sie, welche Plugins aktuell installiert sind:

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

Bestimmen Sie, wo Ihr certbot (in meinem Fall certbot-auto) installiert ist:

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

Gehen Sie in die virtuelle Umgebung und installieren Sie das Plugin

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

Überprüfen Sie die Certbot-Plugins erneut

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

Bitte beachten Sie, dass dies schwierig sein kann. Certbot-Auto-Versions-Upgrades werden dazu führen, dass Sie den Teil "pip install" erneut erstellen müssen.
Ryan

10

Erster Lauf

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

Um herauszufinden, wo certbotinstalliert ist. Oder command -v certbotwenn Sie es vorziehen.

Führen head /usr/bin/certbotSie dann Folgendes aus und notieren Sie, welche Version von Python verwendet wird:

#!/usr/bin/python3

In meinem Fall wurde Python 3 verwendet.

Ich bemerkte an meiner Pip-Ausgabe, dass versucht wurde, ein Python 2.7-Paket zu installieren:

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

Wie bringen wir Pip dazu, stattdessen Python 3-Pakete zu installieren? Kopieren Sie einfach die Anweisungen von hier :

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

Jetzt solltest du den pip3Befehl haben, also führe diesen stattdessen aus:

pip3 install certbot-dns-digitalocean

Und jetzt nochmal versuchen:

# 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

Wenn Sie auf diesen Fehler ImportError: cannot import name 'sysconfig'stoßen, installieren Sie das Paket python3-distutils. Das und die Verwendung von sudo haben es geschafft. Ich habe Route53 Plugin geladen.
DKebler

8

Jetzt (Juli 2018) sollten Sie beide verwenden können

pip install certbot-dns-digitalocean

oder

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

Möglicherweise benötigen Sie sudoBerechtigungen für beide.

Nach der Installation können Sie das Plugin möglicherweise nicht mit sehen certbot plugins, aber Sie sollten in der Lage sein, es in certbot certonly --dns-digitaloceanOrdnung zu bringen.


1
Abwarten. Wie hast du denn certbot installiert? Ich glaube, mein Problem war, dass ich certbot mit aptund certbot-dns-digitaloceanmit installiert habe pipund certbot es nicht finden konnte.
16.

Ja, und ich habe es genauso installiert, wie Sie es getan haben. Vielleicht ist die Art und Weise, wie Sie installiert haben, pipanders? Ich aptinstallierte Python 2.7 und dann sudo easy_install pip(möglicherweise ein apt installiert diese benötigen: python-setuptools python-dev build-essential)
M. Davis

3

Sie müssen Docker verwenden, um DNS-Plugins zu verwenden. Von DNS-Plugins :

Diese Plugins werden derzeit noch von vielen Distributionen gepackt und können derzeit nicht mit installiert werden certbot-auto. Wenn Sie jedoch die Zertifikate bequem selbst installieren möchten, können Sie diese Plugins mit Docker ausführen .


Doc sagt außerdem : "Die meisten Benutzer sollten die Betriebssystempakete verwenden (siehe Anweisungen unter certbot.eff.org) oder als Fallback certbot-auto. Sie sollten Docker nur verwenden, wenn Sie sicher sind, dass Sie wissen, was Sie tun, und einen guten Grund haben dazu. "
Totor

2

Die Art und Weise, wie Sie Certbot-Plugins installieren, hängt davon ab, wie Sie Certbot selbst installiert haben. Wenn Sie certbot mit einem Paketmanager (apt, rpm, brew ...) installiert haben, sollten Sie im Repository dieses Paketmanagers nach kompatiblen certbot-Plugins suchen.

Let's Encrypt unterstützt auch eine alternative Installationsmethode: den certbot-auto-Wrapper. Dieser Wrapper erstellt eine private virtuelle Python-Installation ( /opt/eff.org/certbot/venvnormalerweise in) und installiert certbot in diesem Verzeichnis. Ein nettes Feature von certbot-auto ist, dass es den certbot-Client automatisch auf dem neuesten Stand hält. Ein großer Nachteil ist, dass die Installation von Plugins nicht offiziell unterstützt wird (abgesehen von vier Plugins, die standardmäßig installiert sind).

Es ist einfach genug, diese Einschränkung zu umgehen, wie in der Lösung von Ryan G beschrieben . Plugins, die durch diese Prozedur installiert werden, gehen jedoch jedes Mal verloren, wenn certbot-auto sich selbst aktualisiert, was zu zufälligen Fehlern bei der Erneuerung führen kann. Hier hatten wir einige Situationen, in denen einige Zertifikate aufgrund dieses Problems fast abgelaufen sind. Mehrere Tickets diskutieren dieses Problem im Bug-Tracker von certbot, und das Team erkennt das Problem an, aber es scheint, dass es noch lange dauert, bis das Problem tatsächlich behoben ist.

Wenn Sie daher certbot-auto in einem automatisierten Setup verwenden, ist es wünschenswert, entweder die Selbstaktualisierung von certbot-auto zu verhindern (indem Sie es mit ausführen --no-self-upgrade) oder eine Strategie zu implementieren, um sicherzustellen, dass die erforderlichen Plugins bei jeder Aktualisierung von certbot automatisch neu installiert werden.

Eine mögliche Lösung, um sicherzustellen, dass die erforderlichen Plugins installiert sind, ist das Hinzufügen eines Wrappers um certbot-auto. Dieser Wrapper könnte im Wesentlichen so aussehen:

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

Ich habe verfügbar eine vollständigere Version dieses Wrapper gemacht hier ; Der einzige Unterschied zur längeren Version besteht darin, dass sichergestellt wird, dass der Wrapper als Root ausgeführt wird und das --helpArgument ordnungsgemäß verarbeitet wird .

Laden Sie zum Installieren dieses Wrappers das offizielle certbot-autoProgramm herunter /usr/local/bin/certbot-auto-upstreamund kopieren Sie den Wrapper nach /usr/local/bin/certbot-auto. Stellen Sie sicher , dass beide Dateien über die entsprechende Berechtigung ( chown root:root /usr/local/bin/certbot-auto*dann chmod 755 /usr/local/bin/certbot-auto*). Stellen Sie in der Wrapper-Datei sicher, dass die Zeile CERTBOT_PLUGINS="..."die Liste der tatsächlich benötigten Plugins enthält. Und das ist es. Verwenden certbot-autoSie einfach den Befehl wie zuvor und vergessen Sie die certbot-auto-upstreamDatei.


1

Wenn Sie unter Ubuntu oder Debian arbeiten, können Sie die folgenden Pakete aus Debian Testing (Buster) herunterladen.

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



0

Ich hatte das gleiche Problem, nachdem ich certbot unter OS X aktualisiert hatte. Ich konnte das digitalocean-Plugin nicht mehr anzeigen, selbst nachdem ich es mit neu installiert hatte pip install certbot-dns-digitalocean.

Die Lösung bestand darin, es zu deinstallieren und dann erneut zu installieren. Ich habe sudo benutzt, um sicher zu gehen:

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

Es erschien dann ok in der certbot pluginsListe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.