Sposób instalowania wtyczek certbot zależy od sposobu zainstalowania samego certbota. Jeśli zainstalowałeś certbota za pomocą menedżera pakietów (apt, rpm, brew ...), powinieneś poszukać kompatybilnych wtyczek certbot w repozytorium tego menedżera pakietów.
Let's Encrypt obsługuje również alternatywną metodę instalacji: wrapper certbot-auto. To opakowanie tworzy prywatną instalację wirtualną Pythona (zwykle w /opt/eff.org/certbot/venv
) i instaluje certbota w tym katalogu. Przyjemną cechą certbot-auto jest to, że automatycznie aktualizuje on klienta certbot. Główną wadą jest to, że oficjalnie nie obsługuje instalacji wtyczek (to znaczy oprócz czterech wtyczek instalowanych domyślnie).
Jest to dość łatwe do obejścia tego ograniczenia, jak to opisano w roztworze Ryan G . Jednak wtyczki zainstalowane za pomocą tej procedury zostaną utracone za każdym razem, gdy sama aktualizacja się aktualizuje, co może spowodować losowe odnawianie błędów. W tym przypadku mieliśmy kilka sytuacji, w których niektóre certyfikaty prawie wygasły z powodu tego problemu. Kilka zgłoszeń omawia ten problem w narzędziu do śledzenia błędów Certbota, a zespół uznaje problem, ale wydaje się, że może to być jeszcze długa droga, zanim problem zostanie naprawiony.
Dlatego, jeśli używasz certbot-auto w automatycznej konfiguracji, pożądane jest, aby albo zapobiec automatycznej aktualizacji certbot-auto (przez uruchomienie go --no-self-upgrade
), albo wdrożyć strategię, aby zapewnić, że wymagane wtyczki są automatycznie instalowane ponownie przy każdej aktualizacji certbota.
Możliwym rozwiązaniem, aby rzeczywiście upewnić się, że wymagane wtyczki są zainstalowane, jest dodanie otoki wokół certbot-auto. To opakowanie może wyglądać następująco:
#!/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" "$@"
Mam udostępniane pełniejszą wersję tej owijki tutaj ; jedyną różnicą w przypadku dłuższej wersji jest to, że zapewnia ona, że opakowanie jest uruchamiane jako root, i poprawnie obsługuje --help
argument.
Aby zainstalować to opakowanie, pobierz oficjalny certbot-auto
program /usr/local/bin/certbot-auto-upstream
i skopiuj to /usr/local/bin/certbot-auto
. Upewnij się, że oba pliki mają odpowiednie uprawnienia ( chown root:root /usr/local/bin/certbot-auto*
wtedy chmod 755 /usr/local/bin/certbot-auto*
). W pliku opakowania upewnij się, że wiersz CERTBOT_PLUGINS="..."
zawiera listę potrzebnych wtyczek. I to wszystko. Po prostu użyj certbot-auto
polecenia, tak jak wcześniej, i zapomnij o certbot-auto-upstream
pliku.