La façon dont vous installez les plugins certbot dépend de la façon dont vous avez installé certbot lui-même. Si vous avez installé certbot à l'aide d'un gestionnaire de packages (apt, rpm, brew ...), vous devez rechercher des plugins certbot compatibles dans le référentiel de ce gestionnaire de packages.
Let's Encrypt prend également en charge une méthode d'installation alternative: le wrapper certbot-auto. Ce wrapper crée une installation virtuelle Python privée (généralement dans /opt/eff.org/certbot/venv
) et installe certbot dans ce répertoire. Une caractéristique intéressante de certbot-auto est qu'il maintient automatiquement le client certbot à jour. Un inconvénient majeur est qu'il ne prend pas officiellement en charge l'installation des plugins (c'est-à-dire, à l'exception de quatre plugins installés par défaut).
Il est assez facile de contourner cette limitation, comme décrit dans la solution de Ryan G . Cependant, les plugins installés via cette procédure seront perdus chaque fois que certbot-auto se mettra à jour lui-même, ce qui peut entraîner des échecs de renouvellement aléatoires. Ici, nous avons eu quelques situations où certains certificats ont presque atteint l'expiration en raison de ce problème. Plusieurs tickets discutent de ce problème sur le traqueur de bogues de certbot, et l'équipe reconnaît le problème, mais il semble que cela puisse être encore long avant que le problème ne soit réellement résolu.
Par conséquent, si vous utilisez certbot-auto dans une configuration automatisée, il est souhaitable soit d'empêcher la mise à jour automatique de certbot-auto (en l'exécutant avec --no-self-upgrade
), soit de mettre en œuvre une stratégie pour garantir que les plug-ins requis sont automatiquement réinstallés à chaque mise à jour de certbot.
Une solution possible pour s'assurer que les plugins requis sont installés est d'ajouter un wrapper autour de certbot-auto. Ce wrapper pourrait essentiellement ressembler à ceci:
#!/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" "$@"
J'ai mis à disposition une version plus complète de ce wrapper ici ; la seule différence avec la version plus longue est qu'elle garantit que le wrapper est exécuté en tant que root et qu'il gère correctement l' --help
argument.
Pour installer ce wrapper, téléchargez le certbot-auto
programme officiel dans /usr/local/bin/certbot-auto-upstream
et copiez le wrapper dans /usr/local/bin/certbot-auto
. Assurez-vous que les deux fichiers disposent des privilèges appropriés ( chown root:root /usr/local/bin/certbot-auto*
, alors chmod 755 /usr/local/bin/certbot-auto*
). Dans le fichier wrapper, assurez-vous que la ligne CERTBOT_PLUGINS="..."
inclut la liste des plugins dont vous avez réellement besoin. Et c'est tout. Utilisez simplement la certbot-auto
commande, comme vous l'auriez fait précédemment, et oubliez le certbot-auto-upstream
fichier.