Come installare i plugin Certbot?


19

Ho installato Certbot seguendo questo tutorial :

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

E ora voglio impostare il mio certificato, ma ho bisogno del 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

Ho provato a installarlo con pip:

pip install certbot-dns-digitalocean

Ma a quanto pare la versione apt-get non la sta "vedendo".

Come lo installo correttamente?

Risposte:


15

Metodo migliore, grazie alle altre risposte per avermi aiutato ad arrivare a questo.

Determina quali plugin sono attualmente installati:

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

Determina dove è installato il tuo certbot (nel mio caso certbot-auto):

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

Entra in Virtual Env e installa il plugin

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

Verifica nuovamente i plug-in 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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Si noti che questo può essere complicato per cron, gli aggiornamenti della versione di certbot-auto causeranno la necessità di ripetere la cronizzazione della parte "installazione pip".
Ryan

10

Prima corsa

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

Per scoprire dove certbotè installato. O command -v certbotse preferisci.

Quindi esegui head /usr/bin/certbote nota quale versione di Python sta usando:

#!/usr/bin/python3

Nel mio caso, stava usando Python 3.

Ho notato dal mio output pip che stava cercando di installare un pacchetto Python 2.7:

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

Quindi, come possiamo ottenere pip per installare i pacchetti Python 3 invece? Basta copiare le istruzioni da qui :

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

Ora dovresti avere il pip3comando, quindi esegui questo invece:

pip3 install certbot-dns-digitalocean

E ora riprova:

# 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

se ti imbatti in questo ImportError: cannot import name 'sysconfig'pacchetto di installazione dell'errore python3-distutils. Quello e usando sudo ha fatto il trucco. Ho caricato il plugin route53.
DKebler,

8

Ora (luglio 2018), dovresti essere in grado di utilizzare entrambi

pip install certbot-dns-digitalocean

o

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

Potresti aver bisogno di sudoprivilegi per entrambi.

Dopo l'installazione potresti non essere in grado di vedere il plugin con certbot plugins, ma dovresti riuscire a vedere certbot certonly --dns-digitaloceanbene.


1
Un attimo. Come hai installato certbot allora? Penso che il mio problema fosse che ho installato certbot con apte certbot-dns-digitaloceancon pipe certbot non è stato in grado di trovarlo.
mpen

Sì, e l'ho installato come hai fatto tu. Forse il modo in cui hai installato pipè diverso? Ho aptinstallato python 2.7 e poi sudo easy_install pip(può richiedere un apt installazione di questi: python-setuptools python-dev build-essential)
M. Davis

3

Devi usare Docker per usare i plugin dns. Dai plugin DNS :

Questi plugin sono ancora in fase di impacchettamento da molte distribuzioni e al momento non possono essere installati certbot-auto. Se, tuttavia, hai dimestichezza con l'installazione dei certificati, puoi eseguire questi plugin con Docker .


Doc dice anche : "La maggior parte degli utenti dovrebbe usare i pacchetti del sistema operativo (vedere le istruzioni su certbot.eff.org) o, come fallback certbot-auto. Dovresti usare Docker solo se sei sicuro di sapere cosa stai facendo e hai una buona ragione fare così."
Totor

2

Il modo in cui installi i plugin certbot dipende da come hai installato certbot stesso. Se hai installato certbot usando un gestore di pacchetti (apt, rpm, brew ...), dovresti cercare plugin di certbot compatibili nel repository di quel gestore di pacchetti.

Let's Encrypt supporta anche un metodo di installazione alternativo: il wrapper certbot-auto. Questo wrapper crea un'installazione virtuale privata di Python (generalmente in /opt/eff.org/certbot/venv) e installa certbot in quella directory. Una caratteristica interessante di certbot-auto è che mantiene automaticamente aggiornato il client certbot. Uno svantaggio principale è che non supporta ufficialmente l'installazione di plug-in (ovvero, a parte quattro plug-in installati per impostazione predefinita).

E 'abbastanza facile da aggirare questa limitazione, come descritto nella soluzione di Ryan G . Tuttavia, i plug-in installati tramite tale procedura andranno persi ogni volta che certbot-auto si aggiorna automaticamente, il che può causare errori di rinnovo casuali. Qui, abbiamo avuto alcune situazioni in cui alcuni certificati hanno quasi raggiunto la scadenza a causa di quel problema. Diversi ticket discutono questo problema sul tracker dei bug di certbot e il team riconosce il problema, ma sembra che potrebbe essere ancora molto prima che il problema venga effettivamente risolto.

Pertanto, se si utilizza certbot-auto in una configurazione automatizzata, è consigliabile prevenire l'auto-aggiornamento di certbot-auto (eseguendolo con --no-self-upgrade) o implementare una strategia per garantire che i plug-in richiesti vengano reinstallati automaticamente ogni volta che si aggiorna certbot.

Una possibile soluzione per garantire effettivamente l'installazione dei plug-in richiesti è l'aggiunta di un wrapper attorno a certbot-auto. Quel wrapper potrebbe essenzialmente apparire come segue:

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

Ho reso disponibile una versione più completa di quel wrapper qui ; le uniche differenze con la versione più lunga è che garantisce che il wrapper venga eseguito come root e gestisce correttamente l' --helpargomento.

Per installare quel wrapper, scarica il certbot-autoprogramma ufficiale /usr/local/bin/certbot-auto-upstreame copia il wrapper in /usr/local/bin/certbot-auto. Assicurarsi che entrambi i file dispongano dei privilegi appropriati ( chown root:root /usr/local/bin/certbot-auto*, quindi chmod 755 /usr/local/bin/certbot-auto*). Nel file wrapper, assicurati che la riga CERTBOT_PLUGINS="..."includa l'elenco dei plugin effettivamente necessari. E questo è tutto. Usa semplicemente il certbot-autocomando, come avresti fatto in precedenza, e dimentica il certbot-auto-upstreamfile.


1

Se sei su Ubuntu o Debian, puoi prendere i seguenti pacchetti dal test Debian (buster)

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



0

Ho avuto lo stesso problema, dopo aver aggiornato certbot su OS XI non è stato possibile visualizzare il plug-in digitalocean, anche dopo averlo reinstallato con pip install certbot-dns-digitalocean.

La soluzione era disinstallarlo e quindi reinstallarlo. Ho usato sudo solo per sicurezza:

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

È quindi apparso ok certbot pluginsnell'elenco.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.