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/venv
normalerweise 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 --help
Argument ordnungsgemäß verarbeitet wird .
Laden Sie zum Installieren dieses Wrappers das offizielle certbot-auto
Programm herunter /usr/local/bin/certbot-auto-upstream
und 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-auto
Sie einfach den Befehl wie zuvor und vergessen Sie die certbot-auto-upstream
Datei.