A maneira como você instala os plug-ins do certbot depende de como você instalou o próprio certbot. Se você instalou o certbot usando algum gerenciador de pacotes (apt, rpm, brew ...), deverá procurar plug-ins certbot compatíveis no repositório do gerenciador de pacotes.
O Let's Encrypt também suporta um método de instalação alternativo: o wrapper certbot-auto. Esse wrapper cria uma instalação virtual privada do Python (geralmente dentro /opt/eff.org/certbot/venv
) e instala o certbot nesse diretório. Um recurso interessante do certbot-auto é que ele mantém automaticamente o cliente certbot atualizado. Uma desvantagem importante é que ele não suporta oficialmente a instalação de plug-ins (ou seja, além de quatro plug-ins instalados por padrão).
É fácil o suficiente para contornar esta limitação, conforme descrito na solução de Ryan G . No entanto, os plug-ins instalados por esse procedimento serão perdidos sempre que o certbot-auto for atualizado, o que pode resultar em falhas aleatórias na renovação. Aqui, tivemos algumas situações em que alguns certificados quase atingiram a validade devido a esse problema. Vários tíquetes discutem esse problema no rastreador de erros do certbot, e a equipe reconhece o problema, mas parece que ainda pode demorar muito para que o problema seja resolvido.
Portanto, se estiver usando o certbot-auto em uma configuração automatizada, é desejável impedir a atualização automática do certbot-auto (executando-o --no-self-upgrade
) ou implementar alguma estratégia para garantir que os plug-ins necessários sejam reinstalados automaticamente sempre que o certbot for atualizado.
Uma solução possível para garantir que os plug-ins necessários estejam instalados é adicionar um wrapper ao redor do certbot-auto. Esse invólucro pode basicamente parecer da seguinte maneira:
#!/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" "$@"
Disponibilizei uma versão mais completa desse invólucro aqui ; as únicas diferenças com a versão mais longa é que ela garante que o wrapper esteja sendo executado como raiz e manipula adequadamente o --help
argumento.
Para instalar esse wrapper, faça o download do certbot-auto
programa oficial para /usr/local/bin/certbot-auto-upstream
e copie o wrapper para /usr/local/bin/certbot-auto
. Verifique se os dois arquivos têm privilégios adequados ( chown root:root /usr/local/bin/certbot-auto*
, então chmod 755 /usr/local/bin/certbot-auto*
). No arquivo wrapper, verifique se a linha CERTBOT_PLUGINS="..."
inclui a lista de plug-ins que você realmente precisa. E é isso. Simplesmente use o certbot-auto
comando, como você faria anteriormente, e esqueça o certbot-auto-upstream
arquivo.