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 --help
argumento.
Para instalar ese contenedor, descargue el certbot-auto
programa oficial /usr/local/bin/certbot-auto-upstream
y 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-auto
comando, como lo habría hecho anteriormente, y olvídese del certbot-auto-upstream
archivo.