I got the same exception when called the following command:
./certbot-auto certonly --nginx --dry-run -d *domain-name*
Stack trace:
Exiting abnormally: Traceback (most recent call last): File "/home/poder/.local/share/letsencrypt/bin/letsencrypt", line 11, in <module> sys.exit(main()) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/main.py", line 743, in main return config.func(config, plugins) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/main.py", line 683, in certonly lineage = _get_and_save_cert(le_client, config, domains, certname, lineage) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/main.py", line 82, in _get_and_save_cert lineage = le_client.obtain_and_enroll_certificate(domains, certname) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/client.py", line 344, in obtain_and_enroll_certificate certr, chain, key, _ = self.obtain_certificate(domains) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/client.py", line 313, in obtain_certificate self.config.allow_subset_of_names) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/auth_handler.py", line 74, in get_authorizations resp = self._solve_challenges() File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/auth_handler.py", line 115, in _solve_challenges resp = self.auth.perform(self.achalls) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/configurator.py", line 809, in perform sni_response = chall_doer.perform() File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/tls_sni_01.py", line 75, in perform self.configurator.save("SNI Challenge", True) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/configurator.py", line 721, in save self.parser.filedump(ext='') File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/parser.py", line 239, in filedump out = nginxparser.dumps(tree) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/nginxparser.py", line 134, in dumps return str(RawNginxDumper(blocks.spaced)) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/nginxparser.py", line 98, in __str__ return ''.join(self) File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/nginxparser.py", line 86, in __iter__ for line in self.__iter__([parameter]): # negate "for b0 in blocks" File "/home/poder/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot_nginx/nginxparser.py", line 94, in __iter__ yield "".join(item) + semicolon TypeError: sequence item 2: expected string, NoneType found
Content of the item: ['ssl_certificate_key', ' ', None]
Version: 0.15.0
Without --dry-run the command ran flawlessly.