Skip to content

Instantly share code, notes, and snippets.

@mpolinowski
Last active January 17, 2021 09:34
Show Gist options
  • Save mpolinowski/ba106eb82f9a341498977db875347931 to your computer and use it in GitHub Desktop.
Save mpolinowski/ba106eb82f9a341498977db875347931 to your computer and use it in GitHub Desktop.
Certbot: Hook command "service nginx start" returned error code 1

PROBLEM: Certbot renews NGINX SSL certificate but fails to restart the NGINX service on CentOS:

Running post-hook command: service nginx start
Hook command "service nginx start" returned error code 1
Error output from service:
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

1 renew failure(s), 0 parse failure(s)

POSSIBLE SOLUTION (testing):

 nano /usr/lib/systemd/system/certbot-renew.service

Start Cert Renewal with with --installer none:

[Unit]
Description=This service automatically renews any certbot certificates found

[Service]
EnvironmentFile=/etc/sysconfig/certbot
Type=oneshot
ExecStart=/usr/bin/certbot renew --installer none $PRE_HOOK $POST_HOOK $RENEW_HOOK $CERTBOT_ARGS

And manually add Pre- and Post-Hooks in nano /etc/sysconfig/certbot:

## NOTE ##
# If a hook is set here then it will be used for all
# certificates and will override any per certificate
# hook configuration in place.

# Command to be run in a shell before obtaining any
# certificates. Intended primarily for renewal, where it
# can be used to temporarily shut down a webserver that
# might conflict with the standalone plugin. This will
# only be called if a certificate is actually to be
# obtained/renewed. When renewing several certificates
# that have identical pre-hooks, only the first will be
# executed.
#
# An example to stop the MTA before updating certs would be
# PRE_HOOK="--pre-hook 'systemctl stop postfix'"
PRE_HOOK="service nginx stop"

# Command to be run in a shell after attempting to
# obtain/renew certificates. Can be used to deploy
# renewed certificates, or to restart any servers that
# were stopped by --pre-hook. This is only run if an
# attempt was made to obtain/renew a certificate. If
# multiple renewed certificates have identical post-
# hooks, only one will be run.
#
# An example to restart httpd would be:
# POST_HOOK="--post-hook 'systemctl restart httpd'"
POST_HOOK="service nginx start"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment