MANY decades experienced system administrator now with 54 domains served by Apache's httpd v 2.4.42 on Fedora Core 28 with recent updates. I decided to get them all on https (instead of just one based on IP) and needed to do them one at a time since they're for different orgs. All went well until one of them wouldn't validate and from then on NO MORE validated, totaling 15 domains that certbot couldn't validate. (Before I started I went through the entire set of 54 domains' DNS to confirm none were being served by a backup server as sometimes happens - all are served by the same web server with nearly identical zone layout.)
I suspect there's a root cause that would apply to all of the ones that didn't validate, but I don't know what to look for. ... For now, I'll just list one - the very first one - that wouldn't validate. Note that I performed the exact same steps for all the domains, including all the ones that worked and all the ones that didn't, the only exception being the very first one I had redirect http to https, but the script went wrong and while I fixed it, I figured I'd do that part by hand later.
It may be worth noting that I went back and ran the same command again (same format as below) on a domain that did validate, and told it not to create a new cert but just attempt to reinstall and that worked. And I tried it telling it to create a new cert, and that worked too, but neither seemed to revalidate...
...I'm assuming it's a simple httpd configuration file error or difference from what certbot expects that's tripping things up since once it failed the first time, ALL subsequent attempts also failed. So, I came here, found the pointer to Let's Debug, ran it and when it said things were "All OK!", I knew it was time to post here!
My domain is: clep-energy.org
I ran this command: # certbot run -d clep-energy.org
It produced this output: .. Yall are intelligent, here's an excerpt of the pertinent bits:
Challenge failed for domain clep-energy.org
http-01 challenge for clep-energy.org
Followed later by:
The following errors were reported by the server:
Domain: clep-energy.org
Type: unauthorized
Detail: Invalid response from
http://clep-energy.org/.well-known/acme-challenge/f0J3UP4hvJUSWe4BwmC06EDDemNICXOs1CMnjmmwL5s
[67.101.113.4]: "\n\n400 Bad
Request\n\nBad Request</h1"
My web server is (include version): Apache httpd 2.4.42
The operating system my web server runs on is (include version): From uname -a
Linux server1 4.16.3-301.fc28.x86_64 #1 SMP Mon Apr 23 21:59:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
My hosting provider, if applicable, is: None (I'm the hosting provider!)
I can login to a root shell on my machine yes
I'm using a control panel to manage my site no
The version of my client is (e.g. output of certbot --version
or certbot-auto --version
if you're using Certbot): 1.0.0 (installed last night)
Thanks. ... And if anyone can tell me if certbot notices the server aliases and includes those in the certs it generates, that'd be great! ... Or what to do about it, if not!
OH! I just noticed the "verbose" data from Let's Debug - it might be helpful:
Under HTTPCheck:
Request to: clep-energy.org/67.101.113.4, Result: [Address=67.101.113.4,Address Type=IPv4,Server=Apache/2.4.41 (Fedora) OpenSSL/1.1.1d mod_perl/2.0.10 Perl/v5.28.2,HTTP Status=400], Issue:
Trace:
@0ms: Making a request to http://clep-energy.org/.well-known/acme-challenge/letsdebug-test (using initial IP 67.101.113.4)
@0ms: Dialing 67.101.113.4
@191ms: Server response: HTTP 400 Bad Request
HTTPRecords
clep-energy.org. 0 IN A 67.101.113.4
InternalProblem
Failed to query certwatch database to check rate limits: pq: unnamed prepared statement does not exist
LetsEncryptStaging
Challenge update failures for clep-energy.org in order https://acme-staging-v02.api.letsencrypt.org/acme/order/5751349/77115307
acme: error code 403 "urn:ietf:params:acme:error:unauthorized": Invalid response from http://clep-energy.org/.well-known/acme-challenge/153AoBgfPFrS4afVbEivt2T0E_WH0CA1hPcwF3_YOEQ [67.101.113.4]: "\n\n400 Bad Request\n\n
Bad Request</h1"
StatusIO was "Operational"