How to Fix Plesk Let's Encrypt Certificate Failed: CAA Record and DNS Validation Errors

Priya

Content Writer & Researcher

Last Updated: 10 October 2026
How to Fix Plesk Let's Encrypt Certificate Failed: CAA Record and DNS Validation Errors
πŸ–₯️

SSL Certificate Headaches on Plesk? Let Us Handle It

From CAA records to Cloudflare proxy conflicts, CloudHouse's Plesk experts resolve Let's Encrypt failures fast and set up auto-renewal monitoring so certificates never expire silently. Get help today.

πŸ–₯️12,400+PCs Fixed
⭐4.9β˜…Google Rating
⚑<15 minAvg. Response
πŸ›‘οΈISO 27001Certified

When a Let's Encrypt certificate fails in Plesk, the error message is often cryptic β€” "DNS problem: SERVFAIL looking up CAA", "CAA record for example.com prevents issuance", or "the domain's nameservers may be malfunctioning". These are not random failures. Each error code points to a specific, fixable problem. This guide covers every common Plesk Let's Encrypt certificate failure related to CAA records and DNS validation, with the exact steps to resolve them.

Understanding the Error Messages

Before diving into fixes, it helps to understand what Plesk is actually telling you:

  • SERVFAIL looking up CAA β€” Let's Encrypt's servers queried your domain's DNS for a CAA record and the DNS server returned a server failure instead of a valid response
  • CAA record for example.com prevents issuance β€” A CAA record exists in DNS but does not authorise letsencrypt.org to issue certificates
  • Domain validation failed β€” Let's Encrypt could not verify domain ownership via HTTP-01 or DNS-01 challenge
  • Query timed out during secondary validation β€” Let's Encrypt's secondary validation servers could not reach your DNS on port 53
  • Nameservers may be malfunctioning β€” Let's Encrypt cannot resolve the domain from multiple geographic locations

πŸ’‘ None of these worked? Skip the guesswork.

Get Expert Help β†’

Step 1: Check the Exact Error in Plesk Logs

1Find the Let's Encrypt log in Plesk

Log in to Plesk β†’ navigate to Tools & Settings β†’ Server Components β†’ click Log next to the Let's Encrypt extension. Alternatively, check the server-level log:

cat /var/log/plesk/panel.log | grep -i "letsencrypt\|acme\|CAA" | tail -50
2Verify DNS resolution from the server
# Check CAA records for your domain
dig CAA example.com @8.8.8.8

# Check if your domain resolves correctly
dig A example.com @8.8.8.8
dig +trace example.com

If dig CAA returns SERVFAIL, your DNS server has a configuration issue. If it returns no records at all (NOERROR with empty answer), Let's Encrypt can issue certificates freely β€” there's another cause for the failure.

1Confirm the error is external DNS-related
dig CAA example.com @8.8.8.8
dig CAA example.com @1.1.1.1
# If both return SERVFAIL, the external DNS is the problem
2Add a correct CAA record in your external DNS provider

Log in to your external DNS provider (Cloudflare, Route 53, etc.) and add:

  • Type: CAA
  • Name: @ (root domain) or example.com
  • Flags: 0
  • Tag: issue
  • CA Domain: letsencrypt.org

For Cloudflare specifically: DNS β†’ Add Record β†’ Type: CAA β†’ Name: @ β†’ Tag: issue β†’ CA domain name: letsencrypt.org β†’ TTL: Auto β†’ Save.

3Verify propagation before retrying
dig CAA example.com @8.8.8.8
# Expected: example.com. 300 IN CAA 0 issue "letsencrypt.org"

Once dig shows the correct CAA record, wait an additional 2 minutes and retry the certificate in Plesk.

1Check firewall rules on the Plesk server
# Check if port 53 is open both TCP and UDP
iptables -L -n | grep 53
firewall-cmd --list-ports 2>/dev/null | grep 53

# On Plesk servers running firewalld:
firewall-cmd --zone=public --add-port=53/udp --permanent
firewall-cmd --zone=public --add-port=53/tcp --permanent
firewall-cmd --reload
2Check if Plesk's DNS server is responding to external queries
# Test from an external perspective using a public resolver:
dig A example.com @YOUR_SERVER_IP

# If it doesn't respond, check bind (named) service:
systemctl status named
# Or Plesk DNS:
plesk bin dns --on
3Whitelist Let's Encrypt validation IP ranges

Let's Encrypt publishes their validation server IPs. If you're running CSF or another strict firewall, ensure these are not blocked. Check the Let's Encrypt FAQ for current ranges.

1Test the challenge URL from outside the server
curl -I http://example.com/.well-known/acme-challenge/test

The response should be 404 (file not found yet) β€” not a redirect to HTTPS, not a Cloudflare block page.

2Temporarily disable Cloudflare proxy for the domain

In Cloudflare DNS settings, set the domain record to DNS-only (grey cloud) during certificate issuance. Re-enable proxying after the certificate is issued.

3Check the Plesk Let's Encrypt webroot path

Plesk β†’ Domains β†’ example.com β†’ Let's Encrypt β†’ verify the document root matches the actual web root for the domain.

Step 6: Fix Let's Encrypt Rate Limit Errors

Let's Encrypt allows a maximum of 5 failed validation attempts per domain per hour, and 50 certificate issuances per domain per week. If you're hitting these limits:

# Check if you've hit the rate limit by looking at the Plesk log
grep -i "rate limit\|too many" /var/log/plesk/panel.log | tail -20

If rate-limited, wait the required time period (displayed in the error message). To avoid hitting rate limits, use Let's Encrypt's staging environment for testing β€” but note Plesk does not expose this option in the UI directly.

Step 7: Re-Issue the Certificate After Fixes

Once you've applied the relevant fix:

1. In Plesk β†’ Domains β†’ example.com β†’ SSL/TLS Certificates β†’ click Get it free (Let's Encrypt) β†’ check the boxes for the domain and www alias β†’ click Get it free.

2. Monitor the progress in the task queue (Plesk top toolbar β†’ notifications bell). The process typically completes in under 60 seconds if DNS is healthy.

3. Verify the certificate is active:

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates -issuer

The issuer should read Let's Encrypt and the notAfter should be 90 days from today.

Automating Let's Encrypt Renewal in Plesk

Plesk's Let's Encrypt extension auto-renews certificates 30 days before expiry by default. To verify auto-renewal is active:

# Check the cron entry for Let's Encrypt renewal
crontab -l | grep letsencrypt
cat /etc/cron.d/letsencrypt 2>/dev/null

# Manually trigger renewal for all domains
plesk ext letsencrypt --renew-all

If auto-renewal keeps failing on a specific domain, add a monitoring alert in WHM or set up an external SSL expiry monitor (e.g., using certbot renew --dry-run in a test run) so you catch failures before they cause downtime.

Managing SSL certificates across dozens of Plesk domains is time-consuming β€” especially when external DNS providers introduce CAA edge cases. If you need reliable SSL management as part of a fully managed Plesk environment, CloudHouse's server management team handles Let's Encrypt issuance, renewal monitoring, and DNS configuration for you.

Get the Free Linux Server Admin Cheatsheet (PDF)

Essential commands for server management, networking, and troubleshooting β€” all on one printable page.

Running Linux servers? Let us manage them for you.

Our Managed Linux Server plans cover updates, security hardening, monitoring, and 24/7 incident response β€” so your servers stay up and your team stays focused.

  • Proactive OS patching and security updates
  • 24Γ—7 monitoring with instant alerting
  • Backup configuration and disaster recovery
  • Dedicated Linux engineers on call
See Pricing Plans β†’

What our customers say

β€œOur production server went down at 2 AM. CloudHouse had it back online in under 20 minutes. Incredible response time.”

Arun S.

CTO, SaaS Startup

β€œThey migrated our entire infrastructure from Ubuntu 18 to 22 with zero downtime. Couldn't have asked for better.”

Deepak N.

DevOps Lead

Frequently Asked Questions

SERVFAIL on CAA lookup means your DNS server returned a server error instead of a valid response when Let's Encrypt queried for CAA records. This usually happens with external DNS providers (Cloudflare, GoDaddy, Route 53) that have a misconfigured or non-existent CAA record. Fix it by adding a CAA record in your external DNS: Type CAA, Tag 'issue', Value 'letsencrypt.org'. Wait for propagation (5-10 minutes) and retry.

Need this done for you?

Server Management Service

Managed Linux and Windows servers: monitoring, patching, security and 24/7 support.

Learn more

Book your free 15-minute diagnosis

A certified technician will call you back within 15 minutes during business hours.

Share this article

Leave a Comment

Comments (0)

Loading comments...