| SYSTEM INFORMATION | |
|---|---|
| OS type and version | Ubuntu Linux 22.04.5 |
| Webmin version | 2.610 |
| Virtualmin version | 7.20.2.pro-1 |
Let’s Encrypt cert renewal and request has broken because vmin/certbot seems to be wanting to request certs for nginx nstead of apache. If I manually update a domains cert using a certbot command ( certbot --apache …) cert renewal works.
I’ve had a good look but I cannot see the vmin setting for this. How do I force vmin to only request/renew LE certs using/for apache?
I don’t know how this has happened because nginx isn’t even installed on our vmin server. Is this a certbot bug?
I’m seeing errors like this in the letsencrypt log:
HTTP 200
Server: nginx
Date: Thu, 09 Apr 2026 14:47:14 GMT
Content-Type: application/json
Content-Length: 1135
Connection: keep-alive
Boulder-Requester: 1975107017
Cache-Control: public, max-age=0, no-cache
Link: <https://acme-v02.api.letsencrypt.org/directory>;rel="index"
Replay-Nonce: e8SfZ44tVHF94bk50sYgcZXHVxtorA9c4XpoaZiao4rQT_8Csgg
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800
{
"identifier": {
"type": "dns",
"value": "www.test-domain2.poseidon.salford.ac.uk"
},
"status": "invalid",
"expires": "2026-04-16T14:47:11Z",
"challenges": [
{
"type": "http-01",
"url": "https://acme-v02.api.letsencrypt.org/acme/chall/1975107017/685600304221/WHNjtw",
"status": "invalid",
"validated": "2026-04-09T14:47:13Z",
"error": {
"type": "urn:ietf:params:acme:error:unauthorized",
"detail": "172.167.31.187: Invalid response from http://www.test-domain2.poseidon.salford.ac.uk/.well-known/acme-challenge/JZIr8kWnz5L2IR0GSoirGUq4kxgGe4YCSWKzzBYIlUA: 403",
"status": 403
},
"token": "JZIr8kWnz5L2IR0GSoirGUq4kxgGe4YCSWKzzBYIlUA",
"validationRecord": [
{
"url": "http://www.test-domain2.poseidon.salford.ac.uk/.well-known/acme-challenge/JZIr8kWnz5L2IR0GSoirGUq4kxgGe4YCSWKzzBYIlUA",
"hostname": "www.test-domain2.poseidon.salford.ac.uk",
"port": "80",
"addressesResolved": [
"172.167.31.187"
],
"addressUsed": "172.167.31.187"
}
]
}
]
}
2026-04-09 15:47:14,829:DEBUG:acme.client:Storing nonce: e8SfZ44tVHF94bk50sYgcZXHVxtorA9c4XpoaZiao4rQT_8Csgg
2026-04-09 15:47:14,829:INFO:certbot._internal.auth_handler:Challenge failed for domain admin.test-domain2.poseidon.salford.ac.uk
2026-04-09 15:47:14,829:INFO:certbot._internal.auth_handler:Challenge failed for domain test-domain2.poseidon.salford.ac.uk
2026-04-09 15:47:14,829:INFO:certbot._internal.auth_handler:Challenge failed for domain webmail.test-domain2.poseidon.salford.ac.uk
2026-04-09 15:47:14,830:INFO:certbot._internal.auth_handler:Challenge failed for domain www.test-domain2.poseidon.salford.ac.uk
2026-04-09 15:47:14,830:INFO:certbot._internal.auth_handler:http-01 challenge for Identifier(typ=IdentifierType(dns), value='admin.test-domain2.poseidon.salford.ac.uk')
2026-04-09 15:47:14,830:INFO:certbot._internal.auth_handler:http-01 challenge for Identifier(typ=IdentifierType(dns), value='test-domain2.poseidon.salford.ac.uk')
2026-04-09 15:47:14,830:INFO:certbot._internal.auth_handler:http-01 challenge for Identifier(typ=IdentifierType(dns), value='webmail.test-domain2.poseidon.salford.ac.uk')
2026-04-09 15:47:14,830:INFO:certbot._internal.auth_handler:http-01 challenge for Identifier(typ=IdentifierType(dns), value='www.test-domain2.poseidon.salford.ac.uk')
2026-04-09 15:47:14,830:DEBUG:certbot._internal.display.obj:Notifying user:
Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
Identifier: admin.test-domain2.poseidon.salford.ac.uk
Type: unauthorized
Detail: 172.167.31.187: Invalid response from http://admin.test-domain2.poseidon.salford.ac.uk/.well-known/acme-challenge/0MmDGMIAOAfDOhq2qpCSQjDMkskU8vwvXOlm1re5d0A: 403
Identifier: test-domain2.poseidon.salford.ac.uk
Type: unauthorized
Detail: 172.167.31.187: Invalid response from http://test-domain2.poseidon.salford.ac.uk/.well-known/acme-challenge/gI_PHnKWMw5BdqhkaouL9RMVujFEB-9df3wS89NEOAM: 403
Identifier: webmail.test-domain2.poseidon.salford.ac.uk
Type: unauthorized
Detail: 172.167.31.187: Invalid response from http://webmail.test-domain2.poseidon.salford.ac.uk/.well-known/acme-challenge/8nCPzV_eWX-w2KUNmOCLiW9Uimff6vRD2vIY9TTi5gs: 403
Identifier: www.test-domain2.poseidon.salford.ac.uk
Type: unauthorized
Detail: 172.167.31.187: Invalid response from http://www.test-domain2.poseidon.salford.ac.uk/.well-known/acme-challenge/JZIr8kWnz5L2IR0GSoirGUq4kxgGe4YCSWKzzBYIlUA: 403
Hint: The Certificate Authority failed to download the temporary challenge files created by Certbot. Ensure that the listed identifiers serve their content from the provided --webroot-path/-w and that files created there can be downloaded from the internet.
2026-04-09 15:47:14,831:DEBUG:certbot._internal.error_handler:Encountered exception:
Traceback (most recent call last):
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/auth_handler.py", line 104, in handle_authorizations
self._poll_authorizations(authzrs, max_retries, max_time_mins, best_effort)
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/auth_handler.py", line 208, in _poll_authorizations
raise errors.AuthorizationError('Some challenges have failed.')
certbot.errors.AuthorizationError: Some challenges have failed.
2026-04-09 15:47:14,831:DEBUG:certbot._internal.error_handler:Calling registered functions
2026-04-09 15:47:14,831:INFO:certbot._internal.auth_handler:Cleaning up challenges
2026-04-09 15:47:14,831:DEBUG:certbot._internal.plugins.webroot:Removing /home/test2/public_html/.well-known/acme-challenge/0MmDGMIAOAfDOhq2qpCSQjDMkskU8vwvXOlm1re5d0A
2026-04-09 15:47:14,831:DEBUG:certbot._internal.plugins.webroot:Removing /home/test2/public_html/.well-known/acme-challenge/gI_PHnKWMw5BdqhkaouL9RMVujFEB-9df3wS89NEOAM
2026-04-09 15:47:14,832:DEBUG:certbot._internal.plugins.webroot:Removing /home/test2/public_html/.well-known/acme-challenge/8nCPzV_eWX-w2KUNmOCLiW9Uimff6vRD2vIY9TTi5gs
2026-04-09 15:47:14,832:DEBUG:certbot._internal.plugins.webroot:Removing /home/test2/public_html/.well-known/acme-challenge/JZIr8kWnz5L2IR0GSoirGUq4kxgGe4YCSWKzzBYIlUA
2026-04-09 15:47:14,832:DEBUG:certbot._internal.plugins.webroot:All challenges cleaned up
2026-04-09 15:47:14,832:DEBUG:certbot._internal.log:Exiting abnormally:
Traceback (most recent call last):
File "/snap/certbot/5528/bin/certbot", line 6, in <module>
sys.exit(main())
^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/main.py", line 18, in main
return internal_main.main(cli_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/main.py", line 1886, in main
return config.func(config, plugins)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/main.py", line 1598, in certonly
lineage = _get_and_save_cert(le_client, config, sans, certname, lineage)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/main.py", line 143, in _get_and_save_cert
lineage = le_client.obtain_and_enroll_certificate(sans, certname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/client.py", line 533, in obtain_and_enroll_certificate
cert, chain, key, _ = self.obtain_certificate(sans)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/client.py", line 434, in obtain_certificate
orderr = self._get_order_and_authorizations(csr.data, self.config.allow_subset_of_names)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/client.py", line 512, in _get_order_and_authorizations
authzr = self.auth_handler.handle_authorizations(orderr, self.config, best_effort)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/auth_handler.py", line 104, in handle_authorizations
self._poll_authorizations(authzrs, max_retries, max_time_mins, best_effort)
File "/snap/certbot/5528/lib/python3.12/site-packages/certbot/_internal/auth_handler.py", line 208, in _poll_authorizations
raise errors.AuthorizationError('Some challenges have failed.')
certbot.errors.AuthorizationError: Some challenges have failed.
2026-04-09 15:47:14,834:ERROR:certbot._internal.log:Some challenges have failed.