Jak zainstalować wtyczki Certbot?


19

Zainstalowałem Certbota, wykonując ten samouczek :

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

A teraz chcę skonfigurować mój certyfikat, ale potrzebuję dns-digitaloceanwtyczki:

# 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

Próbowałem zainstalować go z pip:

pip install certbot-dns-digitalocean

Ale najwyraźniej wersja apt-get tego nie „widzi”.

Jak poprawnie go zainstalować?

Odpowiedzi:


15

Lepsza metoda, dzięki innym odpowiedziom za pomoc w dotarciu do tego.

Określ, które wtyczki są obecnie zainstalowane:

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

Sprawdź, gdzie jest zainstalowany Twój certbot (w moim przypadku certbot-auto):

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

Wejdź do Virtual Env i zainstaluj wtyczkę

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

Sprawdź ponownie wtyczki certbota

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

Należy pamiętać, że może to być trudne do crona, aktualizacje wersji certbot-auto spowodują, że będziesz musiał ponownie cron części instalacji „pip install”.
Ryan

10

Pierwszy bieg

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

Aby dowiedzieć się, gdzie certbotjest zainstalowany. Lub command -v certbotjeśli wolisz.

Następnie uruchom head /usr/bin/certboti zanotuj, jakiej wersji Python używa:

#!/usr/bin/python3

W moim przypadku używał Python 3.

Zauważyłem z mojego wyjścia pip, że próbował zainstalować pakiet Python 2.7:

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

Jak więc zmusić pip do zainstalowania pakietów Python 3? Po prostu skopiuj instrukcje tutaj :

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

Teraz powinieneś mieć pip3polecenie, więc uruchom to zamiast tego:

pip3 install certbot-dns-digitalocean

A teraz spróbuj ponownie:

# 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

jeśli napotkasz ten błąd, ImportError: cannot import name 'sysconfig'zainstaluj pakiet python3-distutils. To i użycie sudo załatwiło sprawę. Mam załadowaną wtyczkę route53.
DKebler

8

Teraz (lipiec 2018 r.) Powinieneś mieć możliwość korzystania z obu tych opcji

pip install certbot-dns-digitalocean

lub

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

W sudoobu przypadkach możesz potrzebować uprawnień.

Po zainstalowaniu możesz nie być w stanie zobaczyć wtyczki certbot plugins, ale powinieneś być w stanie certbot certonly --dns-digitaloceandobrze.


1
Wytrzymać. Jak wtedy zainstalowałeś certbota? Myślę, że moim problemem było to, że zainstalowany certbot z apti certbot-dns-digitaloceanz pipi certbot nie był w stanie go znaleźć.
mpen

Tak, i zainstalowałem go tak samo jak ty. Może sposób instalacji pipjest inny? Mam aptzainstalowane Pythona 2.7, a następnie sudo easy_install pip(może wymagać apt zainstalować z nich: python-setuptools python-dev build-essential)
M. Davis

3

Musisz użyć Dockera, aby korzystać z wtyczek dns. Z wtyczek DNS :

Wtyczki te są wciąż pakowane przez wiele dystrybucji i obecnie nie można ich instalować certbot-auto. Jeśli jednak możesz samodzielnie instalować certyfikaty, możesz uruchomić te wtyczki za pomocą Dockera .


Doc mówi również : „Większość użytkowników powinna korzystać z pakietów systemu operacyjnego (patrz instrukcje na stronie certbot.eff.org) lub, jako rozwiązanie awaryjne certbot-auto. Powinieneś używać Dockera tylko wtedy, gdy masz pewność, że wiesz, co robisz i masz dobry powód aby to zrobić. ”
Totor

2

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

Aby zainstalować to opakowanie, pobierz oficjalny certbot-autoprogram /usr/local/bin/certbot-auto-upstreami 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-autopolecenia, tak jak wcześniej, i zapomnij o certbot-auto-upstreampliku.


1

Jeśli korzystasz z Ubuntu lub Debiana, możesz pobrać następujące pakiety z testów Debiana (Buster)

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



0

Miałem ten sam problem, po zaktualizowaniu certbota w OS XI nie mogłem wyświetlić wtyczki digitalocean, nawet po ponownej instalacji pip install certbot-dns-digitalocean.

Rozwiązaniem było odinstalowanie go, a następnie ponowna instalacja. Użyłem sudo tylko dla bezpieczeństwa:

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

Następnie pojawił się na certbot pluginsliście w porządku .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.