mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2026-04-25 08:45:58 +03:00
[GH-ISSUE #319] ACME client implementation flaws #175
Labels
No labels
Q/A
bug
casdoor
dependencies
docker
documentation
duplicate
enhancement
help wanted
invalid
lego
platform:openwrt
platform:windows
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/nginx-ui#175
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @sofusskovgaard on GitHub (Feb 27, 2024).
Original GitHub issue: https://github.com/0xJacky/nginx-ui/issues/319
Describe the bug
If you attempt to generate more than 10 certificates within a 3 hour period, you will be rate limited. This is typically not the expected behavior. Let's Encrypt responds with an error with the following response.
This is generally not a rate limit you should be running into. You can read more about the nature of this rate limiting on Let's Encrypt's website https://letsencrypt.org/docs/too-many-registrations-for-this-ip/#common-causes.
You can read about the reasonable rate limits you can expect to run into on Let's Encrypt's webiste https://letsencrypt.org/docs/rate-limits/.
To Reproduce
Generate 11 certificates within a 3 hour period.
Expected behavior
The ACME client implementation should save and reuse the account registration. This will get rid of the
too many registrations for this IPerror response, and should allow users to generate up to 300 unique certificates every 3 hours.Logs
I stole the following logs from the #237 issue.
Info (please complete the following information):
Additional context
Severity
If you wanted to utilize nginx-ui to manage your load balancer for a multi tenant application that allowed it's end-users to use a custom domain name, you could very easily run into issues when trying to create certificates.
A scarier possibility is that you can run into a situation where you have to renew more than 10 certificates in a given 3 hour period. This is not impossible in the described scenario, especially because it seems that certificates get auto renewed after 7-8 days. This wouldn't be a problem either, if the auto renewal mechanism actually implemented the proper renewal api instead of just issuing a new certificate. Because Let's Encrypt caches domain validations for the account used for 30 days, meaning you can renew the certificate freely in a 30 day period, before having to revalidate the domain with a challenge. You can read about that on the Let's Encrypt website as well https://letsencrypt.org/docs/faq/#i-successfully-renewed-a-certificate-but-validation-didn-t-happen-this-time-how-is-that-possible.
@sofusskovgaard commented on GitHub (Feb 27, 2024):
It could be a great time to implement a mechanism for choosing between various ACME providers (#16). Could be implemented in a similar way as the DNS challenge providers.
Sadly I don't have any experience in developing software with Go, but if I could help in any other way, feel free to reach out @0xJacky. I don't mind getting on a Discord call and helping with research or design.
P.S.: You guys should set up a Discord server for the project if you don't have one already.
@0xJacky commented on GitHub (Feb 28, 2024):
Hi @sofusskovgaard, thanks for your report and suggestions, I will try to enhance it.
@0xJacky commented on GitHub (Apr 30, 2024):
Thanks for your advice, I have implemented these features, for more details please check this pr #361 .