AttributeError: can't set attribute

Please fill out the fields below so we can help you better. Note: you must provide your domain name to get help. Domain names for issued certificates are all made public in Certificate Transparency logs (e.g. crt.sh | example.com), so withholding your domain name here does not increase secrecy, but only makes it harder for us to provide help.

My domain is:
social.pagenstedt.de

I ran this command:
sudo certbot certonly --email my@emailaddress.com -d social.pagenstedt.de --webroot -w /var/lib/letsencrypt/

It produced this output:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Renewing an existing certificate for social.pagenstedt.de
An unexpected error occurred:
AttributeError: can't set attribute
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

My web server is (include version):

nginx/1.22.1

The operating system my web server runs on is (include version):
Debian 12

My hosting provider, if applicable, is:
Hetzner Cloud

I can login to a root shell on my machine (yes or no, or I don't know):
yes

I'm using a control panel to manage my site (no, or provide the name and version of the control panel):
no

The version of my client is (e.g. output of certbot --version or certbot-auto --version if you're using Certbot):
certbot 2.1.0

logfile output
"type": "urn:ietf:params:acme:error:rateLimited",
"detail": "Error creating new order :: too many failed authorizations recently: see Failed Validation Limit - Let's Encrypt",
"status": 429
}
2024-03-18 19:15:09,348:DEBUG:certbot._internal.log:Exiting abnormally:
Traceback (most recent call last):
File "/usr/lib/python3.11/contextlib.py", line 155, in exit
self.gen.throw(typ, value, traceback)
File "/usr/lib/python3/dist-packages/certbot/_internal/main.py", line 1683, in make_displayer
yield displayer
File "/usr/lib/python3/dist-packages/certbot/_internal/main.py", line 1736, in main
return config.func(config, plugins)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/certbot/_internal/main.py", line 1590, in certonly
lineage = _get_and_save_cert(le_client, config, domains, certname, lineage)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/certbot/_internal/main.py", line 126, in _get_and_save_cert
renewal.renew_cert(config, domains, le_client, lineage)
File "/usr/lib/python3/dist-packages/certbot/_internal/renewal.py", line 395, in renew_cert
new_cert, new_chain, new_key, _ = le_client.obtain_certificate(domains, new_key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/certbot/_internal/client.py", line 428, in obtain_certificate
orderr = self._get_order_and_authorizations(csr.data, self.config.allow_subset_of_names)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/certbot/_internal/client.py", line 478, in _get_order_and_authorizations
orderr = self.acme.new_order(csr_pem)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/acme/client.py", line 138, in new_order
response = self._post(self.directory['newOrder'], order)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/acme/client.py", line 338, in _post
return self.net.post(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/acme/client.py", line 711, in post
return self._post_once(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/acme/client.py", line 724, in _post_once
response = self._check_response(response, content_type=content_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/acme/client.py", line 575, in _check_response
raise messages.Error.from_json(jobj)
acme.messages.Error: urn:ietf:params:acme:error:rateLimited :: There were too many requests of a given type :: Error creating new order :: too many failed authorizations recently: see Failed Validation Limit - Let's Encrypt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/certbot", line 33, in
sys.exit(load_entry_point('certbot==2.1.0', 'console_scripts', 'certbot')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/certbot/main.py", line 19, in main
return internal_main.main(cli_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/certbot/_internal/main.py", line 1733, in main
with make_displayer(config) as displayer:
File "/usr/lib/python3.11/contextlib.py", line 188, in exit
exc.traceback = traceback
^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/josepy/util.py", line 191, in setattr
raise AttributeError("can't set attribute")
AttributeError: can't set attribute
2024-03-18 19:15:09,354:ERROR:certbot._internal.log:An unexpected error occurred:
2024-03-18 19:15:09,355:ERROR:certbot._internal.log:AttributeError: can't set attribute

Hello @georgp, welcome to the Let's Encrypt community. :slightly_smiling_face:

Please also see:

How did you install Certbot?

2 Likes

You should upgrade that to the latest version: 2.9.0

1 Like
sudo apt install certbot

Please uninstall that one with that method, then install via this method.

1 Like

just to be sure. I should use snap?

That is the recommended method.

1 Like

There are 2 (3 actually) issues here:

  • the AttributeError: can't set attribute error was fixed in Certbot 2.3.0 so indeed you should upgrade to the latest Certbot. (Debian notoriously ships with older/ancient software versions..)
  • the Error creating new order :: too many failed authorizations recently error from the ACME server means you've tried waaaayyy to often to get a certificate while getting errors and you're now rate limited. Please use the staging environment for testing purposes to prevent hitting this rate limit.
  • there's a different error before the current error which is the ACTUAL error you need to get fixed. Please see /var/log/letsencrypt/ for the relevant log file (the earliest one without the "too many .." error).
4 Likes

I did install certbot 2.9.0 via snap and was able afterwards to renew the certificate with certbot -v
Thanks a lot!

3 Likes