Unable to Provision Certificate with Certbot

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: learndev.allangrayorbis.org

I ran this command: sudo certbot certonly --nginx

It produced this output:

Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems:
Domain: learndev.allangrayorbis.org
Type: connection
Detail: 197.189.224.68: Fetching http://learndev.allangrayorbis.org/.well-known/acme-challenge/wNsZ77A0QJ2ndJf4FaDmvtw0qHMo745yFSmoqcjixfw: Timeout during connect (likely firewall problem)

Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.

Some challenges have failed.

My web server is (include version): Nginx 1.18.0

The operating system my web server runs on is (include version): Ubuntu 22.04 LTS

My hosting provider, if applicable, is: Xneelo

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. Using SSH.

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

I have tried using https://letsdebug.net/ and it provides this output:

{"id":1783360,"domain":"learndev.allangrayorbis.org","method":"http-01","status":"Complete","created_at":"2024-01-26T09:53:41.352226Z","started_at":"2024-01-26T09:53:41.354637Z","completed_at":"2024-01-26T09:54:05.645062Z","result":{"problems":[{"name":"ANotWorking","explanation":"learndev.allangrayorbis.org has an A (IPv4) record (197.189.224.68) but a request to this address over port 80 did not succeed. Your web server must have at least one working IPv4 or IPv6 address.","detail":"A timeout was experienced while communicating with learndev.allangrayorbis.org/197.189.224.68: Get \"http://learndev.allangrayorbis.org/.well-known/acme-challenge/letsdebug-test\": dial tcp 197.189.224.68:80: i/o timeout\n\nTrace:\n@0ms: Making a request to http://learndev.allangrayorbis.org/.well-known/acme-challenge/letsdebug-test (using initial IP 197.189.224.68)\n@0ms: Dialing 197.189.224.68\n@10001ms: Experienced error: dial tcp 197.189.224.68:80: i/o timeout","severity":"Error"},{"name":"IssueFromLetsEncrypt","explanation":"A test authorization for learndev.allangrayorbis.org to the Let's Encrypt staging service has revealed issues that may prevent any certificate for this domain being issued.","detail":"197.189.224.68: Fetching http://learndev.allangrayorbis.org/.well-known/acme-challenge/lQePCpKue969OgBNTnMK52EgbDaglPjG2dqoMqesppk: Timeout during connect (likely firewall problem)","severity":"Error"}]}}

I've also tried creating my-website/.well-known/acme-challenge/Test-File-1234 and I am able to download the file. So, I can't figure out how it's saying that port 80 is blocked if I can navigate to my website and get that file if I put it there myself?

I would appreciate any help!

Do you have any kind of geoblocking going on?

Anti robot systems?

2 Likes

Hello 9peppe

I don't have anything specific set up for that, no. I've got another server set up under the domain learn.allangrayorbis.org and that is able to provision certificates perfectly fine. They're hosted with the same provider in the same "environment", just on separate servers. I haven't set up anything specific on this server to block anything yet, e.g. there's no UFW set up yet. So, it should be open.

I'm not sure how else to debug what the issue might be or if there's some kind of additional server config that certbot needs in order to run.

I can't get to your server, just like the validation servers. It might be a wrong IP address, even.

3 Likes

Would you mind providing more info for that, please?

When you say you can't get to my server, are you trying to navigate to the URL and you're getting blocked? Or are you running a command/tool to try to access the domain?

And if so, what message is it giving you when you can't reach it? Is it saying the server is unreachable or just a timeout or something else?

1 Like

Both command and browser, I timeout before getting any response.

2 Likes

Interesting.

I'm assuming that means that there might be some Geoblocking that I'm not aware of?

Is there any way to know where Let's Encrypts' validation servers do the validation from?

Currently, it should be US and Europe.

There might be some firewall you haven't found yet. Your provider might have their own.

4 Likes

Best practice indicates to:

  • leave port 80 [HTTP] open [to the whole Internet].
  • handle the ACME challenge requests [in HTTP]
  • redirect all [other] traffic to HTTPS
    [Geoblock/WhateverBlock on HTTPS requests]
2 Likes

Hello all,

I just wanted to provide an updated on the issue.

I engaged with the hosting provider and they said that there was no block configured from their end. I have no idea what happened, but on Friday it suddenly started working.

I used tools like Mxtoolbox to make requests to my production and staging URL's and the production URL always showed up in the web server logs whereas it didn't show up in the staging web server logs. On Friday, it appeared.

I did tests by connecting using a VPN and making requests to the different URL's from different geographic locations, which I passed on to the hosting provider. The only thing they picked up was that one of the IP addresses was blacklisted, which they then requested for it to be removed from the blacklist. However, it's fairly normal for a VPN IP address to be blacklisted, so I can't confirm whether that was definitely the issue or not.

Regardless, it is now somehow resolved.

Thanks everyone for their help!

3 Likes