My domain is: katmail.de
I ran this command: certbot renew --dry-run
It produced this output: Attempting to renew cert from /etc/letsencrypt/renewal/katmail.de.conf produced an unexpected error: sequence item 2: expected str instance, NoneType found. Skipping.
-> see below for full output
My web server is (include version): nginx 1.13.1
The operating system my web server runs on is (include version): Arch Linux 64bit
I can login to a root shell on my machine: yes
I’m using a control panel to manage my site: no
Hi, I’ve set up Let’s Encrypt for my sites using the nginx-plugin for certbot, worked without issues.
However, if I try to renew the certificates using certbot renew --dry-run
I run into the following error:
root@hostname ~ # certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/katmail.de.conf
-------------------------------------------------------------------------------
Cert not due for renewal, but simulating renewal for dry run
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for katmail.de
tls-sni-01 challenge for calendar.katmail.de
tls-sni-01 challenge for cloud.katmail.de
tls-sni-01 challenge for mail.katmail.de
tls-sni-01 challenge for www.katmail.de
tls-sni-01 challenge for xmpp.katmail.de
Cleaning up challenges
2017/06/14 20:08:38 [notice] 19326#19326: signal process started
Attempting to renew cert from /etc/letsencrypt/renewal/katmail.de.conf produced an unexpected error: sequence item 2: expected str instance, NoneType found. Skipping.
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/katmail.de/fullchain.pem (failure)
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates above have not been saved.)
1 renew failure(s), 0 parse failure(s)
Judging from the Let’s Encrypt logs, it seems like there is an issue with parsing the nginx configuration files, but the server is up and running, and encryption is working without issues.
Part of letsencrypt.log that contains the error:
root@hostname ~ # cat /var/log/letsencrypt/letsencrypt.log
2017-06-14 18:08:38,504:DEBUG:certbot.error_handler:Encountered exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/certbot/auth_handler.py", line 115, in _solve_challenges
resp = self.auth.perform(self.achalls)
File "/usr/lib/python3.6/site-packages/certbot_nginx/configurator.py", line 809, in perform
sni_response = chall_doer.perform()
File "/usr/lib/python3.6/site-packages/certbot_nginx/tls_sni_01.py", line 75, in perform
self.configurator.save("SNI Challenge", True)
File "/usr/lib/python3.6/site-packages/certbot_nginx/configurator.py", line 721, in save
self.parser.filedump(ext='')
File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 239, in filedump
out = nginxparser.dumps(tree)
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 133, in dumps
return str(RawNginxDumper(blocks.spaced))
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 97, in __str__
return ''.join(self)
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 86, in __iter__
for line in self.__iter__([parameter]): # negate "for b0 in blocks"
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 93, in __iter__
yield "".join(item) + semicolon
TypeError: sequence item 2: expected str instance, NoneType found
2017-06-14 18:08:38,504:DEBUG:certbot.error_handler:Calling registered functions
2017-06-14 18:08:38,504:INFO:certbot.auth_handler:Cleaning up challenges
2017-06-14 18:08:39,697:WARNING:certbot.renewal:Attempting to renew cert from /etc/letsencrypt/renewal/katmail.de.conf produced an unexpected error: sequence item 2: expected str instance, NoneType found. Skipping.
2017-06-14 18:08:39,698:DEBUG:certbot.renewal:Traceback was:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/certbot/renewal.py", line 419, in handle_renewal_request
main.renew_cert(lineage_config, plugins, renewal_candidate)
File "/usr/lib/python3.6/site-packages/certbot/main.py", line 641, in renew_cert
_get_and_save_cert(le_client, config, lineage=lineage)
File "/usr/lib/python3.6/site-packages/certbot/main.py", line 77, in _get_and_save_cert
renewal.renew_cert(config, domains, le_client, lineage)
File "/usr/lib/python3.6/site-packages/certbot/renewal.py", line 297, in renew_cert
new_certr, new_chain, new_key, _ = le_client.obtain_certificate(domains)
File "/usr/lib/python3.6/site-packages/certbot/client.py", line 313, in obtain_certificate
self.config.allow_subset_of_names)
File "/usr/lib/python3.6/site-packages/certbot/auth_handler.py", line 74, in get_authorizations
resp = self._solve_challenges()
File "/usr/lib/python3.6/site-packages/certbot/auth_handler.py", line 115, in _solve_challenges
resp = self.auth.perform(self.achalls)
File "/usr/lib/python3.6/site-packages/certbot_nginx/configurator.py", line 809, in perform
sni_response = chall_doer.perform()
File "/usr/lib/python3.6/site-packages/certbot_nginx/tls_sni_01.py", line 75, in perform
self.configurator.save("SNI Challenge", True)
File "/usr/lib/python3.6/site-packages/certbot_nginx/configurator.py", line 721, in save
self.parser.filedump(ext='')
File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 239, in filedump
out = nginxparser.dumps(tree)
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 133, in dumps
return str(RawNginxDumper(blocks.spaced))
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 97, in __str__
return ''.join(self)
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 86, in __iter__
for line in self.__iter__([parameter]): # negate "for b0 in blocks"
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 93, in __iter__
yield "".join(item) + semicolon
TypeError: sequence item 2: expected str instance, NoneType found
2017-06-14 18:08:39,698:DEBUG:certbot.log:Exiting abnormally:
Traceback (most recent call last):
File "/usr/bin/certbot", line 11, in <module>
load_entry_point('certbot==0.15.0', 'console_scripts', 'certbot')()
File "/usr/lib/python3.6/site-packages/certbot/main.py", line 743, in main
return config.func(config, plugins)
File "/usr/lib/python3.6/site-packages/certbot/main.py", line 693, in renew
renewal.handle_renewal_request(config)
File "/usr/lib/python3.6/site-packages/certbot/renewal.py", line 436, in handle_renewal_request
len(renew_failures), len(parse_failures)))
certbot.errors.Error: 1 renew failure(s), 0 parse failure(s)