惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
博客园 - 【当耐特】
量子位
博客园 - 叶小钗
有赞技术团队
有赞技术团队
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
博客园 - 司徒正美
爱范儿
爱范儿
美团技术团队
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
罗磊的独立博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
I
InfoQ
D
DataBreaches.Net
宝玉的分享
宝玉的分享

Let's Encrypt Community Support - Latest topics

New Certificate Fails with Unauthorized 403 Seeking Clarity and Consistency on Configuring HTTP-01 challenge for multiple domains Certifiate failing renewal Letsencrypt blocked in Iran Problem with http verification Cyber-attacks from the secondary verification source addresses Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems: How will clients handle X2 by X1 cross certificate revocation HTTPS Certificate Renewal and Mixed Content Issues Affecting My Real-Time Morse Code Website Using Let’s Encrypt .conf Files and Nginx along with Certbot Forbidden by policy error generating the let’s encrypt certificate SSL Certificate installed for 1 of 2 domains Certificate apparently not working Certbot 5.6.0 Release Would signing the key authorization with the ACME private key increase security? Lego 5.0.0 Release Certificate renewal incomplete: missing domains beeandlunetrading.com We can’t renew your Let’s Encrypt certificate automatically until the issue is resolved Is using preferred-chain "ISRG Root X2" still a good idea? Crypt::LE --delayed not being honored Expressway certificate renewal error even after upgrading to the latest version Yocto Bitbake install of Certbot luadns fails with 'NoneType' object is not callable Intended audience for "tlsserver" profile Trouble finding Charter Communications as Web Hoster 2026.05.08 Gen Y Cross-Certified Subordinate CAs missing serverAuth EKU Certbot deploy-hook Obtaining account ID from xmox.nl email server SSL Certificate Expired - pwgroup.plabcapy.com More cultural recognition of HTTPS adoption Certificado certbot Upcoming Let’s Encrypt Profile Changes On May 13
Cert renews not working anymore
@MikeMcQ Mik · 2026-04-19 · via Let's Encrypt Community Support - Latest topics

April 19, 2026, 12:56pm 1

My domain is: In this case nadybot.org

I ran this command: certbot renew --cert-name nadybot.org --no-random-sleep-on-renew --dry-run -v

It produced this output:

[root@anarchy-online conf.d]# /usr/bin/certbot renew --cert-name nadybot.org --no-random-sleep-on-renew --dry-run -v --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/nadybot.org.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Certificate is due for renewal, auto-renewing...
Plugins selected: Authenticator nginx, Installer nginx
Simulating renewal of an existing certificate for nadybot.org and www.nadybot.org
Performing the following challenges:
http-01 challenge for nadybot.org
http-01 challenge for www.nadybot.org
Waiting for verification...
Challenge failed for domain nadybot.org
Challenge failed for domain www.nadybot.org
http-01 challenge for nadybot.org
http-01 challenge for www.nadybot.org

Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems:
  Domain: nadybot.org
  Type:   unauthorized
  Detail: 138.201.187.13: Invalid response from https://nadybot.org/.well-known/acme-challenge/5e1xO09-lSH22HTwe1vom9lEe5qnmVJ1DT2HM_pUQbg: 404

  Domain: www.nadybot.org
  Type:   unauthorized
  Detail: 138.201.187.13: Invalid response from https://www.nadybot.org/.well-known/acme-challenge/KZ08iSssro3lp42SOQ6qUnK_womxsEPQgdULvlLGphE: 404

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.

Cleaning up challenges
Failed to renew certificate nadybot.org with error: Some challenges have failed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
All simulated renewals failed. The following certificates could not be renewed:
  /etc/letsencrypt/live/nadybot.org/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)

My web server is (include version): Nginx 1.28.0

The operating system my web server runs on is (include version): Fedora 42

My hosting provider, if applicable, is: -

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):

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

Details:

All my certs can't be renewed anymore, no idea when exactly it started. Letme show you the condif of the domain I posted:

server {
    server_name  nadybot.org www.nadybot.org;
    location / {
    	root /usr/share/nginx/html/;
    }


    listen 443 ssl; # managed by Certbot
    http2 on;
    ssl_certificate /etc/letsencrypt/live/nadybot.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/nadybot.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = www.nadybot.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = nadybot.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name  nadybot.org www.nadybot.org *.nadybot.org;
    listen 80;
}

The problem seems to be that certbot's rewrite of the Nginx config looks like it's the wrong order:

2026-04-19 13:06:18,888:DEBUG:certbot_nginx._internal.parser:Writing nginx conf tree to /etc/nginx/conf.d/nadybot.org.conf:
server {rewrite ^(/.well-known/acme-challenge/.*) $1 break; # managed by Certbot

rewrite ^(/.well-known/acme-challenge/.*) $1 break; # managed by Certbot


    server_name  nadybot.org www.nadybot.org;
    location / {
        root /usr/share/nginx/html/;
    }


    listen 443 ssl; # managed by Certbot
    http2 on;
    ssl_certificate /etc/letsencrypt/live/nadybot.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/nadybot.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location = /.well-known/acme-challenge/long-string{default_type text/plain;return 200 secret-string;} # managed by Certbot

location = /.well-known/acme-challenge/another-long-string{default_type text/plain;return 200 secret-string;} # managed by Certbot

}

server {rewrite ^(/.well-known/acme-challenge/.*) $1 break; # managed by Certbot

rewrite ^(/.well-known/acme-challenge/.*) $1 break; # managed by Certbot


    if ($host = www.nadybot.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = nadybot.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name  nadybot.org www.nadybot.org *.nadybot.org;
    listen 80;
location = /.well-known/acme-challenge/long-string{default_type text/plain;return 200 secret-string;} # managed by Certbot

location = /.well-known/acme-challenge/another-long-string{default_type text/plain;return 200 secret-string;} # managed by Certbot

}

I don't know why it now fails where it didn't fail before, but is there a way to fix this? I get the feeling that there must be some easy solution to this…

MikeMcQ April 19, 2026, 1:22pm 2

Welcome @Nadyita

It looks like something changed since your last good cert issued Dec25 last year which expired Mar25. Certbot would have started renewal requests around Feb25 so has been failing for some time.

Is this a large nginx install? Has it gotten larger, or perhaps nginx reloads gotten slower, in recent months?

Because my first guess is a timing issue. What does this do?

Nadyita April 19, 2026, 1:56pm 3

The installation has 34 (sub)domains, so not really that many. And since December, I haven't really touched it, maybe added 1 or 2 (sub)domains. The 5s sleep still leads to a 404.

Are you sure that the order of location / before location = /.well-known/acme-challenge… should really work? According to the nginx error log, it's looking for /usr/share/nginx/html/.well-known/acme-challenge…

MikeMcQ April 19, 2026, 2:26pm 4

Yes, Certbot has always placed the "location =" block at the bottom of the server block. An "=" sign location takes priority.

Then that isn't the active server block handling the incoming request. Or, there is some other issue when Certbot reloads your nginx.

Things to try:

Add a unique access_log and error_log in that server block. Then see what, if anything, shows up in those for the --dry-run request. If no access log entry then some other server block handled it. Perhaps you use an IP address on a listen statement somewhere which takes precedence? Or do you have a second nginx system running that the request is routed to?

Check that the nginx reload is working properly. After Certbot makes the change to your nginx config it issues a reload (asynchronously). It waits the nginx-sleep-seconds period and then requests the cert from Let's Encrypt. If the reload fails your server block file will have the new lines but the active worker config will not. If the reload exceeds the sleep-seconds nginx just won't be ready with the new config before LE makes its HTTP request to you (which is why I suggested a longer sleep).

Try these to check if reload is working:

sudo ps -eo pid,ppid,start,args | grep nginx | grep -v grep
sudo nginx -s reload
sleep 1
sudo ps -eo pid,ppid,start,args | grep nginx | grep -v grep

Make sure you get all new worker processes after the reload. The master process pid will stay the same. Problems with reload can be caused by lack of handles, for example. Your system doesn't seem large enough for that but possibly if these are very limited on your system.

After this command sequence also check the nginx error_log for reload related issues