Can anyone advise. The current certificate is valid and expires today. The 404 is correct. There is no directory '.well-known' on the machine. So I have manually created the directory '.well-known/acme-challenge' and added the file 'foo.txt'. Apache serves the file:
1974 root@clanmills:/var/www/html/familytree # mkdir -p .well-known/acme-challenge
1975 root@clanmills:/var/www/html/familytree # cp foo.txt .well-known/acme-challenge/
1976 root@clanmills:/var/www/html/familytree # cat .well-known/acme-challenge/foo.txt
i am foo.txt
1977 root@clanmills:/var/www/html/familytree # curl https://familytree.clanmills.com/.well-known/acme-challenge/foo.txt
i am foo.txt
1978 root@clanmills:/var/www/html/familytree #
The current certificate has been working well for three months. I can inspect it with:
# openssl s_client -servername familytree.clanmills.com -connect familytree.clanmills.com:443 </dev/null 2>/dev/null | openssl x509 -text
When I tail -f /var/log/apache2/familytree-error.log, I see the challenge fail when I run certbot renew --verbose --cert-name familytree.clanmills.com --dry-run
[client 66.133.109.36:46405] AH00128: File does not exist: /var/www/familytree/.well-known/acme-challenge/6QhOnPYXnL0d6qGbqDO54H2WedvoUWD7lKjwhD0_Tb4
It feels to me that certbot has created the temporary challenge file in the wrong location. Here is the Apache configuration file:
1987 root@clanmills:/etc/apache2/sites-available # cat familytree-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName familytree.clanmills.com
ServerAlias familytree.clanmills.co.uk
DocumentRoot /var/www/familytree
ErrorLog ${APACHE_LOG_DIR}/familytree-error.log
CustomLog ${APACHE_LOG_DIR}/familytree-access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/familytree.clanmills.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/familytree.clanmills.com/privkey.pem
</VirtualHost>
</IfModule>
Stumped! It'll be something obvious. Any help or ideas will be gratefully received. Thank You, Everybody.
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:
I ran this command:
root@clanmills:~# certbot renew --verbose --cert-name familytree.clanmills.com --dry-run
It produced this output:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/familytree.clanmills.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cannot extract OCSP URI from /etc/letsencrypt/archive/familytree.clanmills.com/cert1.pem
Certificate is due for renewal, auto-renewing...
Plugins selected: Authenticator apache, Installer apache
Simulating renewal of an existing certificate for familytree.clanmills.com and familytree.clanmills.co.uk
Performing the following challenges:
http-01 challenge for familytree.clanmills.co.uk
http-01 challenge for familytree.clanmills.com
Waiting for verification...
Challenge failed for domain familytree.clanmills.co.uk
Challenge failed for domain familytree.clanmills.com
http-01 challenge for familytree.clanmills.co.uk
http-01 challenge for familytree.clanmills.com
Certbot failed to authenticate some domains (authenticator: apache). The Certificate Authority reported these problems:
Domain: familytree.clanmills.co.uk
Type: unauthorized
Detail: 147.93.86.33: Invalid response from http://familytree.clanmills.co.uk/.well-known/acme-challenge/CFNIjsy0v_7ImijqTzpALDiJ2oeAHwtjEdJo5Z62yXU: 404
Domain: familytree.clanmills.com
Type: unauthorized
Detail: 147.93.86.33: Invalid response from http://familytree.clanmills.com/.well-known/acme-challenge/wiu-1KCl0kxSnd_GCL9AfY5RK0yRJK1yEnKt1qybiIM: 404
Hint: The Certificate Authority failed to verify the temporary Apache configuration changes made by Certbot. Ensure that the listed domains point to this Apache server and that it is accessible from the internet.
Cleaning up challenges
Failed to renew certificate familytree.clanmills.com with error: Some challenges have failed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
All simulated renewals failed. The following certificates could not be renewed:
/etc/letsencrypt/live/familytree.clanmills.com/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)
My web server is (include version): Apache 2.4.58
The operating system my web server runs on is (include version):
root@clanmills:~# uname -a
Linux clanmills.co.uk 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 14:14:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
My hosting provider, if applicable, is: VPS on Hostinger.com
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.9.0