Certbot on Windows 11 + Subsystem for Linux

My domain is:remde.dnsalias.net
I ran this command: sudo certbot certonly --standalone

It produced this output:
Certbot failed to authenticate some domains (authenticator: standalone). The Certificate Authority reported these problems:
Domain: remde.dnsalias.net
Type: connection
Detail: 76.113.138.133: Fetching http://remde.dnsalias.net/.well-known/acme-challenge/zzD6Yl8SE5MGMLVi9K2k0Wc_jFZKCbicHZ0B2ttjEGU: Timeout during connect (likely firewall problem)

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

I want to set up Windows and the Ubuntu machine to be able to request a certificate. It's ultimately for a VPN service on a firewall, so I'm letting Certbot set up the temp port 80 site for the certificate request, but there's obviously still something up with the firewalling.
I've set up port forwarding on my office firewall to send port 80 to my Windows host. And the Windows host in turn is set up to map port 80 traffic to the WSL machine's address using the PowerShell command
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=(wsl hostname -I)
However, the access to port 80 is still not working.
I attempted to stand up an apache2 test page on WSL, and that was accessible from my Windows host, though via the WSL IP and not the localhost IP address as I would have hoped.
Is it obvious to anyone here what I may be missing?

Should I give up on Certbot and instead use a Windows client instead? If so, which would you recommend?

Thank you!
Kevin

Hello @KevinRemde, welcome to the Let's Encrypt community. :slightly_smiling_face:

You should know Certbot Discontinuing Windows Beta Support in 2024

Using the online tool Let's Debug yields https://letsdebug.net/remde.dnsalias.net/1924702

ANotWorking
ERROR
remde.dnsalias.net has an A (IPv4) record (76.113.138.133) 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.
A timeout was experienced while communicating with remde.dnsalias.net/76.113.138.133: Get "http://remde.dnsalias.net/.well-known/acme-challenge/letsdebug-test": context deadline exceeded

Trace:
@0ms: Making a request to http://remde.dnsalias.net/.well-known/acme-challenge/letsdebug-test (using initial IP 76.113.138.133)
@0ms: Dialing 76.113.138.133
@10000ms: Experienced error: context deadline exceeded
IssueFromLetsEncrypt
ERROR
A test authorization for remde.dnsalias.net to the Let's Encrypt staging service has revealed issues that may prevent any certificate for this domain being issued.
76.113.138.133: Fetching http://remde.dnsalias.net/.well-known/acme-challenge/pU34ipCXX7TSpDdgh5sPZLInsaKOnH-mnK7uqHMSgjk: Timeout during connect (likely firewall problem)

Using nmap I see Port 80 filtered.

$ nmap -Pn -p80,443 remde.dnsalias.net
Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-03 22:58 UTC
Nmap scan report for remde.dnsalias.net (76.113.138.133)
Host is up (0.072s latency).
rDNS record for 76.113.138.133: c-76-113-138-133.hsd1.mn.comcast.net

PORT    STATE    SERVICE
80/tcp  filtered http
443/tcp open     https

Nmap done: 1 IP address (1 host up) scanned in 1.91 seconds

Best Practice - Keep Port 80 Open

And from you supplied information

1 Like

First you are using the HTTP-01 challenge of the Challenge Types - Let's Encrypt; and it states
"The HTTP-01 challenge can only be done on port 80."

So I would focus on getting the server working for HTTP on Port 80 first; and through all the firewalls.
Then see which ACME Client best suit you needs.

1 Like

Stepping back a little, what's your overall objective? Not getting a cert, but what is your web server for?

You're using WSL to host an Apache website instead of just using IIS on Windows (the "native" choice), or even Apache on Window (a common alternative).

HTTP domain validation works by making an http request to your domain which has to result in the challenge response being served. On "native" windows with IIS that's often done using clients like Certify The Web (which I develop) or win-acme etc, because they can host the http challenge listener themselves (if there is nothing like Apache involved). But from there it depends what webserver you want to use to serve your website as this determines how deployment works.

To get an http challenge to work in WSL the http request needs to resolve to your network IP, be routed to the correct host machine, and be forwarded to the listening process. WSL is definitely an extra complication, it should be achievable but I suppose my question is why are you trying to achieve that?

2 Likes

WSL's init doesn't load any service: cron won't run in WSL2

2 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.