Infomaniak / certbot-dns-infomaniak

Infomaniak DNS Authenticator plugin for certbot
Apache License 2.0
32 stars 13 forks source link

error in API request: an_entry_for_this_subdomain_already_exists / An entry for this subdomain already exists. #33

Closed davidebeatrici closed 6 months ago

davidebeatrici commented 6 months ago

Last time certbot renewed the certificate successfully was in December, now I get the following:

Log ``` add_txt_record mydomain.null _acme-challenge.mydomain.null hfQ2yNos9-5KGKvBCSyomPnXGv_IsxvS3dbILbiQlQI GET https://api.infomaniak.com/1/product?service_name=domain&customer_name=mydomain.null Starting new HTTPS connection (1): api.infomaniak.com:443 https://api.infomaniak.com:443 "GET /1/product?service_name=domain&customer_name=mydomain.null HTTP/1.1" 200 471 1234567 / mydomain.null add_txt_record mydomain.null _acme-challenge hfQ2yNos9-5KGKvBCSyomPnXGv_IsxvS3dbILbiQlQI POST https://api.infomaniak.com/1/domain/1234567/dns/record https://api.infomaniak.com:443 "POST /1/domain/1234567/dns/record HTTP/1.1" 400 473 Encountered exception: Traceback (most recent call last): ``` ```py File "/usr/local/lib/python3.10/dist-packages/certbot/_internal/auth_handler.py", line 88, in handle_authorizations resps = self.auth.perform(achalls) File "/usr/local/lib/python3.10/dist-packages/certbot/plugins/dns_common.py", line 76, in perform self._perform(domain, validation_domain_name, validation) File "/usr/local/lib/python3.10/dist-packages/certbot_dns_infomaniak/dns_infomaniak.py", line 64, in _perform self._api_client().add_txt_record(decoded_domain, validation_name, validation) File "/usr/local/lib/python3.10/dist-packages/certbot_dns_infomaniak/dns_infomaniak.py", line 221, in add_txt_record self._post_request("/1/domain/{domain_id}/dns/record".format(domain_id=domain_id), data) File "/usr/local/lib/python3.10/dist-packages/certbot_dns_infomaniak/dns_infomaniak.py", line 130, in _post_request raise errors.PluginError( certbot.errors.PluginError: error in API request: an_entry_for_this_subdomain_already_exists / An entry for this subdomain already exists. ``` ``` Calling registered functions Cleaning up challenges del_txt_record mydomain.null _acme-challenge.mydomain.null hfQ2yNos9-5KGKvBCSyomPnXGv_IsxvS3dbILbiQlQI GET https://api.infomaniak.com/1/product?service_name=domain&customer_name=mydomain.null Starting new HTTPS connection (1): api.infomaniak.com:443 https://api.infomaniak.com:443 "GET /1/product?service_name=domain&customer_name=mydomain.null HTTP/1.1" 200 471 del_txt_record mydomain.null _acme-challenge hfQ2yNos9-5KGKvBCSyomPnXGv_IsxvS3dbILbiQlQI GET https://api.infomaniak.com/1/domain/1234567/dns/record https://api.infomaniak.com:443 "GET /1/domain/1234567/dns/record HTTP/1.1" 200 None Encountered exception during recovery: IndexError: list index out of range Failed to renew certificate mydomain.null with error: error in API request: an_entry_for_this_subdomain_already_exists / An entry for this subdomain already exists. Traceback was: Traceback (most recent call last): ``` ```py File "/usr/local/lib/python3.10/dist-packages/certbot/_internal/renewal.py", line 540, in handle_renewal_request main.renew_cert(lineage_config, plugins, renewal_candidate) File "/usr/local/lib/python3.10/dist-packages/certbot/_internal/main.py", line 1550, in renew_cert renewed_lineage = _get_and_save_cert(le_client, config, lineage=lineage) File "/usr/local/lib/python3.10/dist-packages/certbot/_internal/main.py", line 131, in _get_and_save_cert renewal.renew_cert(config, domains, le_client, lineage) File "/usr/local/lib/python3.10/dist-packages/certbot/_internal/renewal.py", line 399, in renew_cert new_cert, new_chain, new_key, _ = le_client.obtain_certificate(domains, new_key) File "/usr/local/lib/python3.10/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/local/lib/python3.10/dist-packages/certbot/_internal/client.py", line 496, in _get_order_and_authorizations authzr = self.auth_handler.handle_authorizations(orderr, self.config, best_effort) File "/usr/local/lib/python3.10/dist-packages/certbot/_internal/auth_handler.py", line 88, in handle_authorizations resps = self.auth.perform(achalls) File "/usr/local/lib/python3.10/dist-packages/certbot/plugins/dns_common.py", line 76, in perform self._perform(domain, validation_domain_name, validation) File "/usr/local/lib/python3.10/dist-packages/certbot_dns_infomaniak/dns_infomaniak.py", line 64, in _perform self._api_client().add_txt_record(decoded_domain, validation_name, validation) File "/usr/local/lib/python3.10/dist-packages/certbot_dns_infomaniak/dns_infomaniak.py", line 221, in add_txt_record self._post_request("/1/domain/{domain_id}/dns/record".format(domain_id=domain_id), data) File "/usr/local/lib/python3.10/dist-packages/certbot_dns_infomaniak/dns_infomaniak.py", line 130, in _post_request raise errors.PluginError( certbot.errors.PluginError: error in API request: an_entry_for_this_subdomain_already_exists / An entry for this subdomain already exists. ```

My domain has a TXT record for the domain:

I tried to remove it but no difference.

davidebeatrici commented 6 months ago

Nevermind, the issue was the _acme-challenge subdomain having a CNAME record that was used for validation on another service.