¿Es esta la forma correcta de configurar cron para la renovación del certificado Let's Encrypt en Apache2? Yo uso Ubuntu 16.04.
@monthly letsencrypt renew && service apache2 reload
cron
lets-encrypt
usuario3448600
fuente
fuente

/etc/cron.d/certbotRespuestas:
Mensualmente no es lo suficientemente frecuente. Este script debe ejecutarse al menos semanalmente, y preferiblemente diariamente. Recuerde que los certificados no se renuevan a menos que estén a punto de caducar, y mensualmente ocasionaría que sus certificados existentes ya vencen ocasionalmente antes de que se renueven.
El nombre del programa es
certbot, cuyo nombre se cambióletsencrypt. Si todavía está usandoletsencrypt, debe actualizar a la versión actual.Aparte de esos problemas, es casi lo mismo que mis trabajos cron.
Tenga en cuenta que en 18.04 LTS el paquete letsencrypt ha sido (finalmente) renombrado a certbot. Ahora incluye un temporizador systemd que puede habilitar para programar renovaciones de certbot, con
systemctl enable certbot.timerysystemctl start certbot.timer. Sin embargo, Ubuntu no proporcionó una forma de especificar ganchos. Tendrá que configurar una anulación paracertbot.serviceanularExecStart=con su línea de comando deseada, hasta que Ubuntu solucione esto.fuente
--renew-hooklugar de--post-hookreiniciar solo si el certificado se renueva con éxito.certbot renewsimplemente funcionará ™ExecStartPost=/usr/sbin/service nginx reload. ¡Trabajó para mi!ExecStartPost=es una buena idea. ¿Por qué no pensé en eso? Pero tenga en cuenta que elservicecomando está en desuso; No estará para siempre. Cambie a lossystemctlcomandos correspondientes .No tengo suficiente reputación para comentar, así que responderé aquí. Recientemente (octubre de 2017) instalé y ejecuté certbot en un servidor Ubuntu 16.04 y se creó automáticamente un trabajo cron de renovación
/etc/cron.d/certbot.Aquí está el trabajo cron que se creó:
Sería una buena idea verificar si este archivo ya existe antes de crear una entrada crontab.
fuente
certbot renewsi/run/systemd/systemestá presente, esto se debe a que en su lugar un temporizador systemd ejecuta certbot, lea más sobre certbot y temporizadores systemd aquí .43 6 * * *lo haría funcionar todos los días a las 6:43 AM. Una vez al día debería ser suficiente, pero cualquiera de los dos funciona bien.La documentación de certbot recomienda ejecutar el script dos veces al día:
Como Michael Hampton menciona, el nombre ha cambiado a certbot, pero aún proporcionan la opción -auto que se mantiene actualizada. El
certbot-autocomando necesita privilegios de root para ejecutarse, por lo que la línea en su secuencia de comandos cron debería verse así:En mi propio caso, el
certbot-autoscript se coloca en el directorio de inicio del usuario git. El comando exacto es entoncesTenga en cuenta que el ejemplo en la documentación corresponde a una ruta relativa, como lo indica el punto que puede ser confuso:
./path/to/certbot-auto renew --quietAsegúrese de probar el comando de renovación en un shell de antemano para probar la ruta, si el certificado no se debe renovar, no sucederá nada (ejecute esta prueba sin la
--quietbandera para ver qué está sucediendo).No es estrictamente necesario recargar el servidor cuando el certificado se renueva de esta manera, ya que la ruta al certificado en vivo no cambia si se configura correctamente.
Esto es cierto si está ejecutando apache: para nginx, considere agregar un gancho de renovación, como:
fuente
--renew-hookpara reiniciar solo después de una renovación exitosa: guyrutenberg.com/2017/01/01/…No deberías tener que configurar nada. Cualquier instalación reciente de Debbot / Ubuntu de certbot debe instalar un temporizador systemd y un trabajo cron (y el trabajo cron solo se ejecutará
certbotsi systemd no está activo, por lo que no puede ejecutar ambos).temporizador systemd
Puede verificar sus temporizadores systemd usando el comando
systemctl list-timers(osystemctl list-timers --allsi también desea mostrar temporizadores inactivos). Algo como esto:El temporizador certbot debe estar aquí
/lib/systemd/system/certbot.timery ejecutará el comando especificado en/lib/systemd/system/certbot.servicecertbot.timerejecutará el `certbot.service a las 12 a.m. y a las 12 p.m., después de un retraso aleatorio de hasta 12 horas (43200 segundos).y
certbot.serviceejecutará el comando de renovación.trabajo cron
Como otros han mencionado, también hay un trabajo cron instalado en
/etc/cron.d/certbot:Esto esta haciendo:
test -x /usr/bin/certbot -a \! -d /run/systemd/system- compruebe si/usr/bin/certbotes un archivo ejecutable y que no/run/systemd/systemes un directorio. Solo continúe al siguiente bit si esta verificación tiene éxito.perl -e 'sleep int(rand(43200))'- Dormir una cantidad aleatoria entre 0 segundos y 12 horas (43200 = 12 x 60 x 60).certbot -q renewrevise sus certificados y renueve cualquiera si es necesario. El-qindicador es "silencioso": no produzca ningún resultado a menos que haya un error.Originalmente estaba confundido por el trabajo cron, ya que no se iba a ejecutar debido a systemd, entonces, ¿cómo se ejecutaría certbot? Encontré la respuesta en esta publicación del foro, en la que basé esta respuesta.
fuente
/etc/cron.d/certbotexiste,systemctl list-timersmuestracertbot.timer, pero mis certificados no fueron renovados. Ejecutarcertbotmanualmente funcionó bien, así que no sé qué está pasando. Terminé agregando unacrontabentrada de la vieja escuela .testpara verificar si systemd está activo y si lo está, el trabajo cron sale inmediatamente sin ejecutarsecertbot; vea el texto sobre el trabajo cron. Editaré el texto para ser más preciso.Para la renovación del certificado LetsEncrypt, generalmente uso getssl . Es un envoltorio de shell muy útil que incluso puede instalar certificados en otras máquinas a través de una conexión SSH.
La entrada cron es la siguiente:
01 23 * * * root /root/scripts/getssl/getssl -u -a -q >>/var/log/getssl.log 2>&1 ; /usr/sbin/apache2ctl gracefulComo ya se sugirió, debe ejecutarlo diariamente o, mejor aún, dos veces al día.
fuente
Como ya lo mencionó glaux:
Fuente: https://certbot.eff.org/all-instructions/#debian-8-jessie-apache
Así que terminé usando esto (correr dos veces al día, a la 01:00 y a las 13:00 todos los días):
o mejor:
No probé pero esto también debería funcionar:
Fuente: https://certbot.eff.org/docs/using.html
fuente
--renew-hookque reinicie su servidor solo cuando el certificado realmente se renueve.--post-hooky--renew-hookser enservice apache2 restartlugar deservice restart apache2?service restart apache2comando / servicio no es correcto.Esto es lo que uso:
da salida como:
Y dice que apache ya se ha reiniciado, por lo que no es necesario volver a hacerlo. Si lo ejecuto nuevamente:
por lo tanto, no es problema renovar el certificado diariamente, mi cron es entonces:
Utilizo script para ajustar el registro para separar el archivo, así que aquí está mi cronautorenew.sh:
fuente
Otros miembros ya proporcionaron respuestas mucho más detalladas. Pero parece que debería mencionarlo aquí.
A partir de la versión 0.21.1 de certbot, el
--renew-hookindicador se cambia a--deploy-hookAsegúrese de que no está utilizando un indicador obsoleto.fuente
De acuerdo con la guía EFF certbot
Si no está seguro de si o no su sistema ha esto ya automatizado, el cheque de su sistema crontab (típicamente en
/etc/crontab/y/etc/cron.*/*$ crontab -ly temporizadores systemd$ systemctl list-timers.fuente