Respuesta actualizada (ver respuesta original a continuación)
En mi respuesta original, me concentré en el hecho de que el script que proporcionó no es obligatorio cuando se utiliza el renew
comando. Sin embargo, no me aseguré de que el renew
comando sea realmente aplicable en este escenario.
Como dicen cdhowie y bobpaul en los comentarios: certbot renew
es un modo no interactivo que, junto con el desafío dns, requiere que proporciones un script a través del --manual-auth-hook
parámetro. Dicho script debe ser capaz de establecer un TXT
registro. También puede proporcionar otro script para la limpieza posterior a través del --manual-cleanup-hook
parámetro.
Si proporciona estos parámetros, todo el proceso se ejecutará automáticamente sin ninguna interacción.
Si no proporciona estos parámetros, certbot fallará:
/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
Si desea renovar sus certificados a través del modo manual, debe volver a ejecutar los comandos que utilizó para adquirir los certificados. En este caso, su secuencia de comandos es una buena opción ya que el certonly
comando no mira los certificados / configuración actuales y en su lugar requiere que proporcione los nombres de dominio a través del -d
parámetro o en modo interactivo.
cuando ejecuto "certbot refresh", ¿los renovará automáticamente sin usar mi script?
TL; DR: Sí, debería.
Echemos un vistazo a la documentación de certbot :
A partir de la versión 0.10.0, Certbot admite una acción de renovación para verificar todos los certificados instalados por vencimiento inminente e intentar renovarlos. La forma más simple es simplemente
certbot renovar
Hasta aquí todo bien.
Este comando intenta renovar cualquier certificado obtenido previamente que caduque en menos de 30 días.
Esto debería responder a tu pregunta. Cuidado: no sé qué tan bien certbot
puede manejar situaciones en las que mueve los certificados a diferentes directorios.
Más adelante en el mismo párrafo:
El mismo complemento y las opciones que se utilizaron en el momento en que se emitió originalmente el certificado se utilizarán para el intento de renovación, a menos que especifique otros complementos u opciones. A diferencia certonly
, renew
actúa en múltiples certificados y siempre tiene en cuenta si cada uno está por vencer.
Entonces sí; certbot
debería renovar todos sus certificados sin la ayuda de su script.
¿Cómo puedo crear un nuevo certificado usando el desafío DNS para comenzar?
¿Qué tiene de malo el comando que publicaste al principio de tu publicación?
certbot -d example.com --manual --preferred-challenges dns certonly
adquirirá un certificado para example.com usando el desafío dns.
Los pasos para crear un certificado son:
- Ejecute el
certbot
comando que publicó
- Espere a que el comando le muestre un registro TXT de DNS
- Crea ese registro TXT
- Continuar el
certbot
comando
- Obtenga un certificado para el dominio especificado
- Elimine el registro TXT (ya que solo lo necesita para la creación y uno nuevo para la renovación)
Si desea automatizar ese proceso completo, es posible que desee echar un vistazo a una herramienta como lego que admite un par de proveedores de DNS .
certbot renew
no es compatible con el método manual sin un script .--manual
. El propósito de--manual
es forzar el modo interactivo. Pero puede usar complementos DNS como aws o digitaloceancertonly
sin la--manual
opción y se renovarán automáticamente antes de 90 días.