The CW Corner – Avoiding and Resolving Let’s Encrypt Rate Limits

Recently, I encountered an issue while attempting to renew an SSL certificate for one of my domains, (let’s call it) testdomain.com, using Let’s Encrypt on a server running Virtualmin on Debian 12. The process was more complicated than I expected due to a small oversight that many others could easily make. This article details my experience, the errors I encountered due to Let’s Encrypt rate limits (which I didn’t know existed), and steps to avoid or resolve such issues.


The Problem: Let’s Encrypt Rate Limits for Failed Authorizations

A padlock that shows with an encrypted site using https in some browsers.

A padlock that shows with an encrypted site using https in some browsers.

Let’s Encrypt provides free SSL certificates for securing websites. However, it enforces rate limits to ensure fair usage and prevent abuse. While attempting to renew the SSL certificate for testdomain.com, I discovered that the DNS settings were not pointed to my server, causing repeated failed validation attempts. By the time I fixed the DNS settings, I had hit Let’s Encrypt’s rate limit for failed authorizations.

This limit restricts requests for the same domain to 5 failed attempts per hour. Once you hit this limit, you must wait for the cooldown period to expire before trying again.


How the Error Appeared in Virtualmin

In the Virtualmin interface, I attempted to renew the certificate by navigating to:

  1. Virtualmin > Server Configuration > SSL Certificate
  2. Clicking on the Let’s Encrypt tab
  3. Ensuring the domain and subdomain (e.g., testdomain.com and www.testdomain.com) were selected
  4. Clicking the Request Certificate button

The renewal process failed with an error that Virtualmin reported as “an unknown issue.” Upon further investigation, I found the detailed error logs in the Let’s Encrypt log file located at:

/var/log/letsencrypt/letsencrypt.log

From the log, I saw this message:

urn:ietf:params:acme:error:rateLimited :: There were too many requests of a given type :: too many failed authorizations (5) for "testdomain.com" in the last 1h0m0s, retry after [time].

Understanding Let’s Encrypt Rate Limits

Let’s Encrypt enforces several types of rate limits. Here are the key ones:

  1. Failed Validation Limit:
    • 5 failed validations per domain per hour.
    • This applies to any validation failure, such as DNS misconfigurations or inaccessible .well-known/acme-challenge directories.
  2. Duplicate Certificate Limit:
    • 5 identical certificates per week.
    • If you request the same set of domains repeatedly, you’ll hit this limit.
  3. Certificates per Registered Domain:
    • 50 certificates per registered domain per week.
    • All subdomains count toward this limit.
  4. Account-Level Requests:
    • 50 certificates per account per week.

These limits are described in detail at Let’s Encrypt’s rate limit documentation.


Diagnosing the Problem

If you encounter a similar issue, here are the steps to diagnose and resolve it:

1. Check DNS Settings

  • Ensure the domain’s DNS A records correctly point to your server.
  • Use tools like dig or online DNS propagation checkers to verify.

2. Verify Webroot Accessibility

  • Let’s Encrypt uses the webroot method to validate domains by creating files in the .well-known/acme-challenge/ directory.
  • Ensure this directory is publicly accessible. You can test it by creating a file and accessing it in a browser:
    http://testdomain.com/.well-known/acme-challenge/test-file

3. Examine Let’s Encrypt Logs

  • Detailed logs are stored at:
    /var/log/letsencrypt/letsencrypt.log
  • Look for messages indicating a rate limit or validation failure.

4. Check Cooldown Period

  • If you’ve hit the rate limit, the log will indicate a Retry-After time in UTC. Convert it to your local timezone to determine when you can retry.

5. Dry Run Your Request

  • Before making a live request, use Certbot’s --dry-run option to test:
    certbot certonly --webroot -w /path/to/webroot -d testdomain.com -d www.testdomain.com --dry-run

Steps to Avoid Future Issues

1. Ensure DNS Settings Before Requesting Certificates

  • Double-check that DNS records point to the correct server and have propagated globally before initiating an SSL request.

2. Test Webroot Configuration

  • Verify that the .well-known/acme-challenge/ directory is accessible for all domains you’re requesting.

3. Use the Dry-Run Option

  • Always test with --dry-run before making a live request to avoid hitting limits.

4. Automate Renewals

  • Virtualmin and Certbot support automated renewals. Ensure the cron job is configured correctly and DNS remains stable.

5. Avoid Forcing Duplicate Requests

  • Options like --duplicate and --force-renewal can lead to unnecessary requests. Only use them when absolutely necessary.

Conclusion

Hitting Let’s Encrypt’s rate limits can be frustrating, but understanding the causes and solutions can save time and effort. By checking DNS settings, verifying webroot accessibility, and using dry runs, you can prevent failed authorizations and avoid cooldown periods.

If you’re using Virtualmin, remember to check the Let’s Encrypt logs for detailed error messages, and plan your certificate renewals carefully to stay within the rate limits. Hopefully, my experience with testdomain.com helps you navigate and prevent similar issues.

As always, proactive testing and attention to detail go a long way in maintaining a secure and smoothly running server.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – WordPress loading images – blank thumbnail issue

Sometimes in a WordPress website an issue develops where when loading images into media library, only a blank thumbnail shows. It appears a space is created in the database for the picture but there is no content in it.

After testing compatibility of plugins, themes, php, etc., the problem persisted.

To resolve this, one can navigate here logged into WordPress as an administrator:
Go to Dashboard > Settings > Media

Make sure the correct default file path is showing there. When troubleshooting this issue on a site that was unable to upload media files, the file path was shown as:

/home/username/domains/thedomainname.com/private_html/wp-content/uploads

Note that the “username” and “thedomainname.com” in the above and below path examples will be the Linux username and the actual site domain name respectively that you are troubleshooting.

The fix

When this path was removed, the image file upload worked normally again and the problem appeared to be solved.

Possible Reasoning or Causes

In the DirectAdmin path structure, there are two places the website’s servable coding (like WordPress or HTML sites or Joomla, etc.) might be stored:

/home/username/domains/thedomainname.com/public_html

or

/home/username/domains/thedomainname.com/private_html

The “public_html” folder is where DirectAdmin normally places the website’s code (again, referring to all the files and programs that make up the actual WordPress or HTML or Joomla site’s coding, etc.).

The “private_html” folder is where DirectAdmin normally tries to place the website’s code when its content is encrypted. That’s why there is an option in DirectAdmin’s site control panel that allows one to “Use a symbolic link from private_html to public_html”. This option allows for using the same data in http and https.

The suspicion here is that a setting got changed or an update occurred causing the WordPress system to use the private_html setting when the site resides in public_html. Removing the file path from the settings forced WordPress to use where the system actually defaulted to – which cleared the problem.

We may never know how the setting actually got bunged up, but it is an easy fix once it is.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – Persistent Scammers

I’ve written several articles about specific scams that are occurring on a regular basis on the Internet. They seem to subside for a short time – a very short time – and then a wave of them happens again.

One of the worst – as far as I am concerned – are the ones where the email recipient is being told they must verify their email. These have some common traits with most Internet scams:

1) A sense of urgency – they want you to take care of this immediately

2) A time limit – they give you within 24 hours to act

3) A threat – they tell you your email will be locked.

The first thing you have to understand is that nearly everyone gets these on occasion. I have received them myself in which they are made to look like they are from CharlesWorks. So when our clients get these they tend to become very worried very quickly.

I can’t stress enough that most legitimate companies will not send out messages like these. To fall prey to these can be a real nightmare. With access to one’s email these days the bad guys can wreak havoc in one’s life. The worst cases are called identity theft!

Don’t be the unfortunate one who falls prey to these scammers. If you have been “notified” of something serious – call your provider up and speak with a representative. Just like at my company – it’s a lot easier for us to allay your fears than to have to try to clean up the mess that can happen with compromised accounts.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – Hosting Includes Encryption

Website visitor safety is extremely important. I’ve mentioned terms here before like SSL, encryption, security and so on. A padlock that shows with an encrypted site using https in some browsers.These involve that little green or grey lock in front of the web address in your browser. Clicking on that tells you whether the encryption is valid and what site it’s issued to.

Providing encryption was traditionally expensive for website operators. However, it can be had for free these days. There’s no reason not to have it.

Encryption refers to a method on website servers that helps ensure you are actually on the website you think you are on. This greatly reduces the risks of fraud.

Ripping you off is a top priority for many nefarious individuals and organizations on the web. One method is tricking you into giving your credit card or other personal information on a “fake” site or web page. These pages often look exactly like those of your bank’s or credit card company’s or even your email’s login pages.

There’s usually a small one-time charge for initial setup. Website owners should check with their hosting company or web developer to ensure website encryption (SSL) is included in their monthly hosting at no extra charge. If need be, it’s worthwhile to move to a company whose hosting provides this.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – Web Developer Checklist

It’s increasingly difficult sorting the good companies from the bad ones on the Internet. There are still ways to find the best, reliable web development companies. We’ve compiled this recommended checklist as a starting point. The order these are in isn’t necessarily important since ALL the points are very important!

Check to see if your web development company:

will ensure that YOU own your website when it’s paid for
is legitimately registered to do business within its State: NH MA ME VT
has been in business for at least 10 years
has several or more people
carries Workers Compensation on its employees
carries liability insurance
maintains a committed presence in networking groups
is accredited and has a good rating with the Better Business Bureau (https://BBB.org)
understands your community and reciprocates by referring business to you
has a phone contact where one can at least leave messages
has an email contact where one can send information
provides automatic site updates at no additional ongoing charge
backs up websites every night for at least a month
provides website encryption (SSL) at no additional ongoing charge
does not require hosting or domain contracts
does not overcharge you by selling you inflated monthly maintenance plans
provides partial hour web work billing (9 minutes work charged 9/60 of hourly rate)
can respond to most maintenance requests in 3-4 days
has general familiarity with trademark and copyright issues
is proficient with WordPress through experience and training

Over upcoming weeks check here for details about each. Contact us with any questions, we exist to serve you!

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail