¿Cómo instalar los complementos de Certbot?

19

Instalé Certbot siguiendo este tutorial :

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

Y ahora quiero configurar mi certificado, pero necesito el dns-digitaloceancomplemento:

# 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

Intenté instalarlo con pip:

pip install certbot-dns-digitalocean

Pero aparentemente la versión de apt-get no lo "ve".

¿Cómo lo instalo correctamente?

mpen
fuente

Respuestas:

15

Mejor método, gracias a las respuestas de los demás por ayudarme a llegar a esto.

Determine qué complementos están instalados actualmente:

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

Determine dónde está instalado su certbot (en mi caso certbot-auto):

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

Entra en Virtual Env e instala el complemento

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

Verifique los complementos certbot nuevamente

# 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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ryan
fuente
Tenga en cuenta que esto puede ser complicado para cron, las actualizaciones de la versión certbot-auto harán que necesite volver a cron la porción de "instalación de pip".
Ryan
10

Primer intento

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

Para saber dónde certbotestá instalado. O command -v certbotsi lo prefieres.

Luego ejecute head /usr/bin/certboty observe qué versión de Python está usando:

#!/usr/bin/python3

En mi caso, estaba usando Python 3.

Noté por mi salida de pip que estaba tratando de instalar un paquete Python 2.7:

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

Entonces, ¿cómo obtenemos pip para instalar paquetes de Python 3? Solo copie las instrucciones desde aquí :

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

Ahora debería tener el pip3comando, así que ejecute esto en su lugar:

pip3 install certbot-dns-digitalocean

Y ahora intenta nuevamente:

# 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
mpen
fuente
si se encuentra con este error, ImportError: cannot import name 'sysconfig'instale el paquete python3-distutils. Eso y usar sudo hizo el truco. Tengo el plugin route53 cargado.
DKebler
8

Ahora (julio de 2018), debería poder usar

pip install certbot-dns-digitalocean

o

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

Es posible que necesite sudoprivilegios para cualquiera.

Después de la instalación, es posible que no pueda ver el complemento certbot plugins, pero debería poder hacerlo certbot certonly --dns-digitaloceanbien.

M. Davis
fuente
1
Aférrate. ¿Cómo instaló certbot entonces? Creo que mi problema fue que instalé certbot con apty certbot-dns-digitaloceancon pipy certbot no pudo encontrarlo.
mpen
Sí, y lo instalé de la misma manera que tú. ¿Quizás la forma en que instaló pipes diferente? Yo aptinstalado Python 2.7 y después sudo easy_install pip(puede requerir instalar un apt de ellos: python-setuptools python-dev build-essential)
M. Davis
3

Tienes que usar Docker para usar los complementos dns. Desde complementos DNS :

Estos complementos todavía están en proceso de ser empaquetados por muchas distribuciones y actualmente no se pueden instalar con certbot-auto. Sin embargo, si se siente cómodo instalando los certificados usted mismo, puede ejecutar estos complementos con Docker .

erickgnavar
fuente
Doc también dice : "La mayoría de los usuarios deben usar los paquetes del sistema operativo (consulte las instrucciones en certbot.eff.org) o, como alternativa, certbot-autosolo debe usar Docker si está seguro de saber lo que está haciendo y tiene una buena razón. para hacerlo ".
Totor
2

La forma en que instala los complementos certbot depende de cómo instaló certbot. Si instaló certbot usando algún administrador de paquetes (apt, rpm, brew ...), entonces debe buscar complementos certbot compatibles en el repositorio de ese administrador de paquetes.

Let's Encrypt también admite un método de instalación alternativo: el contenedor certbot-auto. Este contenedor crea una instalación virtual privada de Python (generalmente en /opt/eff.org/certbot/venv) e instala certbot en ese directorio. Una buena característica de certbot-auto es que mantiene automáticamente actualizado al cliente certbot. Una desventaja importante es que no admite oficialmente la instalación de complementos (es decir, aparte de cuatro complementos que se instalan de forma predeterminada).

Es bastante fácil de evitar esta limitación, como se describe en la solución de Ryan G . Sin embargo, los complementos instalados a través de ese procedimiento se perderán cada vez que certbot-auto se actualice, lo que puede provocar fallas de renovación aleatorias. Aquí, hemos tenido algunas situaciones en las que algunos certificados casi caducan debido a ese problema. Varios tickets discuten este problema en el rastreador de errores de certbot, y el equipo reconoce el problema, pero parece que todavía puede pasar mucho tiempo antes de que el problema se solucione realmente.

Por lo tanto, si usa certbot-auto en una configuración automatizada, es deseable evitar la actualización automática de certbot-auto (ejecutándolo con --no-self-upgrade) o implementar alguna estrategia para garantizar que los complementos necesarios se reinstalen automáticamente cada vez que certbot se actualice.

Una posible solución para garantizar que los complementos necesarios estén instalados es agregar un contenedor alrededor de certbot-auto. Esa envoltura esencialmente podría verse de la siguiente manera:

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

He puesto a disposición una versión más completa de ese contenedor aquí ; La única diferencia con la versión más larga es que garantiza que el contenedor se ejecute como root y maneja adecuadamente el --helpargumento.

Para instalar ese contenedor, descargue el certbot-autoprograma oficial /usr/local/bin/certbot-auto-upstreamy copie el contenedor /usr/local/bin/certbot-auto. Asegúrese de que ambos archivos tengan los privilegios adecuados ( chown root:root /usr/local/bin/certbot-auto*, entonces chmod 755 /usr/local/bin/certbot-auto*). En el archivo contenedor, asegúrese de que la línea CERTBOT_PLUGINS="..."incluya la lista de complementos que realmente necesita. Y eso es. Simplemente use el certbot-autocomando, como lo habría hecho anteriormente, y olvídese del certbot-auto-upstreamarchivo.

jwatkins
fuente
1

Si está en Ubuntu o Debian, puede obtener los siguientes paquetes de las pruebas de Debian (buster)

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

Matthew Darwin
fuente
0

Tuve el mismo problema, después de actualizar certbot en OS XI no pude hacer que apareciera el complemento digitalocean, incluso después de reinstalarlo pip install certbot-dns-digitalocean.

La solución fue desinstalarlo y luego reinstalarlo. Solía ​​sudo solo para estar seguro:

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

Luego apareció bien en la certbot pluginslista.

Alan Lawson
fuente